ошибка возвращается в:Python NameError, переменная «не определено»
NameError: name 'lives' is not defined
Я знаю, что код не так эффективно, как это возможно, это одна из моих первых проектов, однако все, что я пытаюсь сделать эта ошибка появляется, я пробовал сделать глобальный для нее, но это не помогло. Я бы очень признателен за помощь в этом, спасибо!
import random
import time
def main():
global guess,rand_num
win = False
rand_num = 45
lives = 10
while lives > 0 and win == False:
guess = int(input("Guess a number!"))
compare()
print("Well done!")
time.sleep(3)
def compare():
global lives,win
if guess == rand_num:
print("You guessed correct!")
win = True
elif guess > rand_num:
print ("Guess lower!")
lives = lives - 1
else:
print ("Guess higher!")
lives = lives - 1
def repeat():
replay = input("would you like to play again? Y/N")
if replay == "Y":
print("enjoy!")
main()
elif replay == "N":
"Goodbye then, hope you enjoyed!"
time.sleep(3)
os._exit
else:
print("please enter Y or N")
repeat()
main()
repeat()
EDIT: положить глобальные жизни внутри основной() возвращает ошибку:
UnboundLocalError: local variable 'lives' referenced before assignment
Посмотрите на ответ @ chepner. Декларация 'global' должна быть в' main'. Если вы это сделаете, ваш код будет работать нормально. – zondo
Общая рекомендация: избегать глобальных переменных. Напишите функции, а не процедуры. Программисты Python обычно используют 4 пробела для отступов. –
Я поставил глобальный для всех 4, жизни, win, rand_num и угадал как в compare(), так и в main(), и это, казалось, сработало, но я все еще не уверен, нужны ли все 4 в обоих, или какие из них нужен где. @Zondo – Kaos