检查有效输入(无限重复问题)

时间:2017-12-13 15:08:02

标签: python

我正在尝试编写一个策划者游戏,我现在正在研究的部分是检查用户的输入是否有效(例如,提供的颜色之一)。我遇到的问题是我为此目的创建的函数不会退出。这是我的代码的相关部分:

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#

无限次,直到代码退出

我该如何解决这个问题?

2 个答案:

答案 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: