我正在尝试编写一个策划者游戏,我现在正在研究的部分是检查用户的输入是否有效(例如,提供的颜色之一)。我遇到的问题是我为此目的创建的函数不会退出。这是我的代码的相关部分:
count = 0
check_bool = True
check_count = 0
colours = ["R","O","Y","G","B","I","V"]
correct = True
def check_invalid():
global guess
global check_bool
global check_count
while check_bool:
while check_count < 1:
if guess[int(check_count)] in colours:
pass
elif guess[int(check_count)] not in colours:
check_count += 1
if check_count >= 1:
print("Guess",count + 1,":")
check = input()
elif check_count == 0:
check_guess = False
return guess
while count <= 9 and correct:
print("Guess",count + 1,":")
guess = input()
if guess in C:
guide()
print("Guess",count + 1,":")
guess = input("...")
[guess[i:i+n] for i in range(0, len(guess), n)]
guess = (guess.upper())
check_invalid()
check(answer,guess)
count += 1
如果是第一次猜测,我希望它输出:
>>>
Guess 1:
...
直到输入有效输入
它真正给我的是:
>>>
Guess 1:
... #user input here#
Guess 1:
... #user input here#
Guess 1:
... #user input here#
Guess 1:
... #user input here#
无限次,直到代码退出
我该如何解决这个问题?
答案 0 :(得分:1)
如果猜测在列表中,您可以直接返回。 还有那个代码,我在传递中卡住循环,它应该直接返回猜测它是否有效
if guess[int(check_count)] in colours:
return guess
你在问题中循环的原因是你回答错误,但在check_invalid完成问题之后,你会将其输入为check而不是guess,它永远不会将它传回check_invalid()函数。您还需要将check_count归零,以便它不会通过验证步骤
if check_count >= 1:
print("Guess", count + 1, ":")
guess = input()
check_count = 0
check_invalid()
经过上述编辑后,它正常工作(已检查)
也没有丝毫的线索,为什么for循环在
中答案 1 :(得分:0)
它输出无限的时间。这意味着你的代码中有一个真正的循环。 代码中的以下语句永远不会出错,因此它会一直打印。
while check_bool: