2016-06-01 2 views
0

Я сделал этот код, и когда вы выбираете чернику, черника остается на одном, и я не знаю, почему. Я хочу, чтобы пользователь приобрел несколько черники, но, похоже, остается на одном.переменные, не меняющиеся при добавлении целого числа

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

Вам следует добавить, как вы вызываете функцию и комментируете, что вы ожидаете в последнем заявлении печати. Итак, вы вызываете функцию с черникой = 1, а последняя печать печатает 1? –

ответ

1

integer переменные являются неизменяемыми, это означает, что

def blueberryfound(val): 
    val = val + 1 

blueberries = 1 
blueberryfound(blueberries) 

не работает. Только внутри функции будет увеличиваться, внешняя переменная 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) 
Смежные вопросы