2016-06-01 7 views
0

私はこのコードを作った。あなたがブルーベリーを選んだとき、あなたのブルーベリーは1つにとどまっていた。私はユーザーに複数のブルーベリーを手に入れたいが、それは1つにとどまるようだ。整数を追加するときに変数が変化しない

def blueberryfound(blueberries): 
    print("  .-~~~~-.") 
    print("  /((' \ ") 
    print("  | () ) | ") 
    print("  \) ' }//") 
    print("  \,,,,,,,,/") 
    leaveorpick = input("Enter P to pick or L to leave the blueberry!").lower() 
    if leaveorpick == "p": 
     print("") 
     print("You chose to keep the berry.") 
     blueberries = blueberries + 1 
     print("You now have",blueberries,"blueberries.") 
+0

'blueberryfound(1)'で呼び出すとうまく動作します。 'p'を入力すると'ブルーベリーが2つあります。 ' – stevieb

+0

関数をどのように呼び出すかを追加し、最後のprint文で期待していることについてコメントする必要があります。つまり、blueberries = 1の関数を呼び出し、最後のプリントが1を出力します。 –

答えて

1

integer変数は不変で、これは

def blueberryfound(val): 
    val = val + 1 

blueberries = 1 
blueberryfound(blueberries) 

が動作しないことを意味します。関数内のvalのみがインクリメントされ、外部変数blueberriesは変更されません。代わりにあなたが

def blueberryfound(val): 
    return val + 1 

blueberries = 1 
blueberries = blueberryfound(blueberries) 

を行うことができます別の方法としては、プレイヤオブジェクトがblueberriesはそれらの一つである、多くのプロパティを持つオブジェクト指向のアプローチを、使用することができます。あなたの関数は、与えられたプレーヤーインスタンスのすべてのプロパティを操作できます。

class Player(object): 
    blueberries = 0 

def blueberryfound(player): 
    player.blueberries += 1 

player = Player() 
blueberryfound(player) 
関連する問題