저는 처음 파이썬 프로그래머입니다. 그리고 방금 첫 번째 프로그램 인 Battle을 마쳤습니다. 하지만 문제가 있습니다. 내가 UnboundLocalError
어디서 최대한 멀리 볼 수있는, 모든 코드가 끝 부분 한 부분을 제외하고 잘 작동, 좀 걸릴 :왜 내 코드에서이 오류가 발생합니까?
Traceback (most recent call last):
File "[Dir]\Programs\Battle.py", line 210, in <module>
callUserCombat()
File "[Dir]\Programs\Battle.py", line 26, in callUserCombat
playerLeft = str(playerLeft)
UnboundLocalError: local variable 'playerLeft' referenced before assignment
을 그리고 이것은 유감이 (NO 소량 참조 무슨이다) : 여기
#Define callUserCombat().
def callUserCombat():
print('Your turn.')
time.sleep(2)
print()
print('Choose a move:')
print('Attack 1 [2 - 3 Damage] (1)')
print('Attack 2 [0 - 5 Damage] (2)')
print('Heal [Heals 0 - 6] (3)')
playerLeft = str(playerLeft)
enemyLeft = str(enemyLeft)
print('Your HP: ' + playerLeft)
print('Enemy HP: ' + enemyLeft)
chosenAttack = input()
while chosenAttack != '0':
if chosenAttack == '1':
chosenAttackPower = random.randint(2,3)
enemyLeft = - chosenAttackPower
chosenAttackPower = str(chosenAttackPower)
print('You attacked!')
print('Enemy lost ' + chosenAttackPower + 'HP. ')
break
if chosenAttack == '2':
chosenAttackPower = random.randint(0,5)
enemyLeft = - chosenAttackPower
chosenAttackPower = str(ChosenAttackPower)
print('You attacked!')
print("Enemy lost " + chosenAttackPower + 'HP. ')
break
if chosenAttack == '3':
chosenAttackPower = random.randint(1,5)
playerLeft = + chosenAttackPower
chosenAttackPower = str(ChosenAttackPower)
print('You healed!')
print('Healed ' + chosenAttackPower + 'HP.')
break
else:
chosenAttack = '0'
print('Please enter a valid move code.')
print("Attack 1 (1)")
print("Attack 2 (2)")
print("Heal (3)")
print()
chosenAttack = input()
limitHealth()
#Define callEnemyCombat().
def callEnemyCombat():
print('Enemy\'s turn.')
time.sleep(2)
print()
enemyAttack = random.randint(1,6)
if enemyAttack == '1':
enemyAttackPower = random.randint(2,3)
playerLeft = - enemyAttackPower
enemyAttackPower = str(enemyAttackPower)
print('Don\'t bother taunting me, you\'ll die trying. And it\'s mean.')
print('Enemy attacked!')
print('You lost ' + enemyAttackPower + 'HP. ')
if enemyAttack == '2':
enemyAttackPower = random.randint(2,3)
playerLeft = - enemyAttackPower
enemyAttackPower = str(enemyAttackPower)
print('Where do you live? I only want to know so I can kill')
print('your family once I\'m finished with you.')
print('Enemy attacked!')
print('You lost ' + enemyAttackPower + 'HP. ')
if enemyAttack == '3':
enemyAttackPower = random.randint(2,3)
playerLeft = - enemyAttackPower
enemyAttackPower = str(enemyAttackPower)
print('I can take anything you can throw at me. Except Chocolate.')
print('I\'m allergic to Chocolate.')
print('Enemy attacked!')
print('You lost ' + enemyAttackPower + 'HP. ')
if enemyAttack == '4':
enemyAttackPower = random.randint(0,5)
playerLeft = - enemyAttackPower
enemyAttackPower = str(enemyAttackPower)
print('I WILL kill you, even if I have to hire the Men in Black to do it.')
print('Enemy attacked!')
print('You lost ' + enemyAttackPower + 'HP. ')
if enemyAttack == '5':
enemyAttackPower = random.randint(0,5)
playerLeft = - enemyAttackPower
enemyAttackPower = str(enemyAttackPower)
print('Have you heard of pong? We could play pong after I kill you,')
print('if you like.')
print('Enemy attacked!')
print('You lost ' + enemyAttackPower + 'HP. ')
if enemyAttack == '6':
enemyAttackPower = random.randint(1,5)
enemyLeft = + enemyAttackPower
enemyAttackPower = str(ChosenAttackPower)
print('Charging up with a cold glass of water, and a side of you.')
print('Enemy healed!')
print('Healed ' + chosenAttackPower + 'HP.')
limitHealth()
#Define limitHealth().
def limitHealth():
if playerLeft > playerHealth:
playerLeft = playerHealth
if enemyLeft > enemyHealth:
enemyLeft = enemyHealth
그리고
그래서 모든 감각 만드는 코드입니다 : ( https://www.dropbox.com/s/9l4ifgmk5sx1pg1/Battle.py).EDITED : 게시물에 대해 유감스럽게 생각합니다.
를 방지해야 오류가 발생하는 위치 코드의 관련 부분을 추출하십시오 (+ - 5-7 라인)와 질문으로 포함되어 있습니다. – akluth
_module_ 레벨에서 정의되었지만 함수에서 정의되지 않은 'playerLeft'가 있습니다 - 범위 지정 문제처럼 보입니까? ... – Basic
@Basic 당신은 답을 쓸 수 있습니다. 나는 나의 것을 삭제했다. 당신의 신용을 포기하고 싶지 않아요. – CppLearner