现在这是randomNumber在Python中猜测测验代码的初学者版本。你们中的许多人都可以看到它,并使它缩短4倍,我得到它。然而,这个问题的关键在于我不确定这个问题背后的逻辑。 如果您执行此代码,它将正常工作 - 直到您再次播放部分。 键入否时 - 程序按预期退出。是的,再次开始。 但是,如果你先输入Yes并且游戏再次进行游戏并且你决定现在我要退出 - 这次你必须输入No两次。 然后就退出了。我不知道为什么。想法?
import random
def game(x,y):
con = True
count = 0
ranNum = random.randint(x,y)
while con:
userInput = int(input("Take a guess between these numbers {} and {}: ".format(x,y)))
count +=1
if userInput == ranNum:
print("You got it!")
print("Number of tries: {}.".format(count))
print("Play again?")
while True:
again = input("> ")
if again.lower() == "yes":
game(x,y)
elif again.lower() == "no":
con = False
break
elif userInput < ranNum:
print("Wrong! Try higher!")
elif userInput > ranNum:
print("Wrong! Try lower!")
game(5,10)
答案 0 :(得分:0)
最简单的解决方案:当用户回答“是”时,您需要在调用游戏()后休息或返回。
这有一个令人遗憾的副作用,即每个连续的游戏都会向堆栈添加另一个调用。一个更好的设计会再次推动游戏?&#39;提出了游戏功能。
答案 1 :(得分:0)
问题是你自己正在运行game(x, y)
。因此,con
是一个局部变量。可以这样想:当你第一次输入时,它会从game(x, y)
内运行的game(x, y)
退出。因此,你玩过的次数是你需要的次数型号。更简单的方法是,像@xulfir所说,将"Play again?"
循环放在函数之外,或者你可以放exit()
而不是使用break
来杀死程序。