当 'else' 应该在 python 基本猜测操作中激活时,如何修复使用 'and' 参数激活的 'if' 语句?

How to fix 'if' statement activating with 'and' arguments when 'else' should be activating in python basic guessing operation?

这里是新手。我正在尝试应用我目前在 Python 中学到的知识,以更好地理解目前的工作原理。我将某人的数字猜谜游戏与 freecodecamp 的猜谜游戏相结合。当遇到'guess limit'时,我输对了。但是,当号码输入正确时,用户仍然 'loses'.

例如在下面的代码中,我用 x = 5 调用函数,当我 'guess' 5 时,我仍然收到 'if limit' 动作,而我希望它是 'else'行动。

我已经尝试了几种变体,看看我是否能弄明白,但无济于事。任何支持将不胜感激。如果有 link 或文章可以指导我,那就太好了。

def numguess(x):
    number = x
    guess = 0
    guess_count = 1
    guess_limit = 5
    limit = False

    while guess != number and not(limit):
        guess = int(input("\nGuess the number: "))
        if guess < number and guess_count <= 4:
            print("too low")
            guess_count += 1
        elif guess > number and guess_count <= 4:
            print("too high")
            guess_count += 1
        else:
            limit = True
        
    if limit:
        print("you lose")
    else:
        print("you win")
numguess(5) 

您可以像这样简化您的代码:

def numguess(x):
    number = x
    guess = 0
    guess_count = 1
    guess_limit = 5

    while guess != number and guess_count <= guess_limit:
        guess = int(input("\nGuess the number: "))
        if guess < number:
            print("too low")
            guess_count += 1
        elif guess > number:
            print("too high")
            guess_count += 1
        
    if guess_count <= guess_limit:
        print("you win")
    else:
        print("you loose")
numguess(5)

或者,如果您真的想使用 limit 变量:

def numguess(x):
    number = x
    guess = 0
    guess_count = 1
    guess_limit = 5
    limit = False

    while guess != number and not(limit):
        guess = int(input("\nGuess the number: "))
        if guess < number:
            print("too low")
            guess_count += 1
        elif guess > number:
            print("too high")
            guess_count += 1
        limit = guess_count > guess_limit
        
    if limit:
        print("you loose")
    else:
        print("you win")
numguess(5)