2013-11-28 3 views
0

У меня возникли проблемы с передачей этого словаря между одной функцией и другой.python - передача переменных между функциями

def player_main(): 
    player = {"health" : 100, 
       "xp" : 100, 
       "strength" : 0, 
       "dexterity" : 0, 
       "wisdom" : 0, 
       "level_req" : None, 
       "health_spawn" : None, 
       "enemy_hit" : None} 
    choice = difficulty_sequence() 
    if choice == "easy": 
     player = easy_difficulty(player) 
    elif choice == "hard": 
     player = hard_difficulty(player) 
    player = character_creation(player) 
    print(player) 
    return player 

Теоретически моя вторая функция должна вызывать «игрок» с первого. Второй не меняет значения этого значения вообще, но некоторые из его переменных зависят от первой функции.

def enemy_flail(): 
    print("Flail!") 
    player = player_main() 
    stat = player["strength"] 
    print(stat) 
    damage = stat//4 + 5 
    print(damage) 
    return damage 

Может ли кто-нибудь увидеть, в чем я ошибаюсь?

Редактировать - enemy_flail() не будет печатать ни стат, ни урон, что заставляет меня поверить, что это не вызов player_main() в первую очередь.

+1

Что именно должно произойти? –

+1

Нет, потому что вы не описали, что на самом деле неправильно. Что происходит, чего не должно быть, или этого не происходит? –

ответ

0

Каждый раз, когда вы вызываете enemy_flail, вы создаете новый словарь player, сбросив все значения.

0

Возможно, вы захотите определить player = player_main() за пределами своей функции enemy_flail и работать только один раз, а затем звонить enemy_flail(player) каждый раз.

Смежные вопросы