3 回答
TA贡献1817条经验 获得超14个赞
您的代码不起作用,因为您guess_game()
在每次猜测后继续调用,每次猜测后有效地开始新游戏。
当用户最终正确猜测时,它总是在该新游戏中的 1 次猜测之后,然后所有游戏立即结束,但代码永远不会到达在任何这些游戏中多次猜测后打印数字的行。
有很多不同的方法可以解决这个问题,但这里的主要问题是(像许多新程序员一样)你没有意识到调用函数不仅让程序跳转到你的新代码,它还为你创造了一个全新的空间。要工作的程序(对函数的每次调用都有自己的“作用域”)并在函数完成后从该程序返回,在大多数情况下之前的作用域不变。
TA贡献1786条经验 获得超11个赞
每次你打电话guess_game(),你基本上是在重置游戏。
相反,您希望将游戏封闭在一个while循环中,该循环仅在游戏结束时退出。我在这里为您编写了一个工作版本:
import random
rand_num = random.randrange(1,201)
def guess_game():
guesses = 1
while(True):
guess = int(input("Please enter your guess: "))
if guess == rand_num:
print("Hit!\nIt took you " + str(guesses) + " guesses!")
return 0
elif guess < rand_num:
print("Your guess is too low.")
guesses = guesses + 1
else:
print("Your guess is too high")
guesses = guesses + 1
guess_game()
TA贡献1807条经验 获得超9个赞
您的代码运行不正常,因为guesses=1当您调用函数本身(递归)时,您在函数中进行了初始化,变量guess 的值被重置。
import random
rand_num = random.randrange(1,201)
guesses=0 #initialize it outside function
def guess_game():
guess = int(input("Please enter your guess: "))
global guesses
guesses+=1
if guess == rand_num:
print("Hit!\nIt took you " + str(guesses) + " guesses!")
elif guess < rand_num:
print("Your guess is too low.")
guess_game()
else:
print("Your guess is too high")
guess_game()
guess_game()
添加回答
举报