2017-04-18 6 views
0

がどのように約今NameError: name 'cost' is not defined at player.reduce_mp(cost)名 'コスト' は定義されていないエラーラインplayer.reduce_mp(コスト)

elif index == 1: 
    player.choose_magic() 
    magic_choice = int(input('Choose magic'))-1 
    magic_dmg = player.generate_spell_damage() 
    spell = player.get_spell_name(magic_choice) 
    cost = player.get_spell_mp_cost(magic_choice) 
    current_mp = player.get_mp() 

    if cost > current_mp: 
     print(bcolors.FAIL + '\nNot enough MP\n' + bcolors.ENDC) 
     continue 

player.reduce_mp(cost) 
enemy.take_damage(magic_dmg) 
print(bcolors.OKBLUE + '\n' + spell + 'deals', str(magic_dmg), 'points of damage' + bcolors.ENDC) 
+1

その領域のコードを見ることなく、言うことは難しいですが、 'cost'は' elif'部分にしか表示されないので、 'player.reduce_mpの中で使用すると範囲外ですコスト) ' – gabe3886

+2

コストが定義されている場所を表示します。 –

答えて

0

を取得:

elif index==1: 
    player.choose_magic() 
    magic_choice=int(input('Choose magic'))-1 
    magic_dmg=player.generate_spell_damage() 
    spell=player.get_spell_name(magic_choice) 
    cost=player.get_spell_mp_cost(magic_choice) 

    current_mp=player.get_mp() 

    if cost>current_mp: 
     print(bcolors.FAIL+ '\nNot enough MP\n'+bcolors.ENDC) 
     continue 

    player.reduce_mp(cost) 
    enemy.take_damage(magic_dmg) 
    print(bcolors.OKBLUE+'\n'+spell+'deals',str(magic_dmg),'points of damage'+bcolors.ENDC) 
-1

の事あなたが 'コスト' を使用しているということですその宣言の範囲外の値。 お使いの場合、最終的な文がうまくインデントされた場合は、(インデントなし、elifの前に)その割り当ての前に、印刷範囲で

int cost 

を追加します。このpostはあなたにこの概念をさらに説明します。

+0

'' int cost''は有効なpythonではありません。また、ここではスコープは関係しません。if文(およびelse/elif)はpythonでスコープをオープンしません。 –

関連する問題