它返回的错误是:
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()
编辑:将全局生命置于main()中会返回错误:
UnboundLocalError: local variable 'lives' referenced before assignment
答案 0 :(得分:2)
您需要在函数main之外定义变量“lives”,然后在任何要引用该全局变量的函数中定义“全局生命”。当您在函数中并为变量赋值时,它假定它在本地范围内。使用“全球生命”告诉该功能将全球范围视为生命的参照。
import random
import time
lives = 10
win = False
guess = 0
rand_num = 45
def main():
global guess, rand_num, lives, win
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 guess, rand_num, 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()
答案 1 :(得分:1)
您没有在lives
内声明main()
是全局的,因此它是该函数的本地。
def main():
global guess, rand_num, lives
...
答案 2 :(得分:0)
当你在函数内部声明它们时,它们仅在该函数作用域中可用,因此在函数外部声明全局变量,代码将正常工作。
import random
import time
guess = None
random_num = None
lives = 3
win = False
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()
现在这很好用。有关gloval vs local变量的更多信息,请参阅:http://www.python-course.eu/global_vs_local_variables.php