【问题标题】:How to fix 'if' statement activating with 'and' arguments when 'else' should be activating in python basic guessing operation?当'else'应该在python基本猜测操作中激活时,如何修复'if'语句激活'and'参数?
【发布时间】:2021-12-25 09:37:04
【问题描述】:

这里是新手。我正在尝试应用我迄今为止在 Python 中学到的知识,以更好地理解迄今为止的工作方式。我正在将某人的数字猜谜游戏与 freecodecamp 的猜谜游戏结合起来。当达到“猜测限制”时,我输得正确。但是,当数字输入正确时,用户仍然“输”。

例如在下面的代码中,我用 x = 5 调用函数,当我“猜测”为 5 时,当我希望它是“else”操作时,我仍然会收到“if 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 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) 

【问题讨论】:

  • 当guess 等于数字时,else limit = True 就完成了....所以你会收到“你输了”的消息是非常合乎逻辑的。你应该只在以下情况下将limit 设置为True guess_count >=guess_limit
  • 还有为什么and guess_count &lt;= 4: ??那不应该是:and guess_count &lt; guess_limit: 吗?

标签: python if-statement while-loop


【解决方案1】:

您可以像这样简化代码:

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)

【讨论】:

  • 感谢 Luuk 解决了这个问题。并感谢您建议在哪里插入该guess_limit。我想知道为什么当我没有在其他任何地方引用它时我什至做到了。在观看 youtube 的几个小时中,我还没有看到任何人在 if + elif 中没有以“else”结尾的部分,所以你是如何写的很有趣。
猜你喜欢
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 2011-02-24
  • 2022-05-19
  • 2016-09-08
  • 2021-06-02
  • 2022-12-04
  • 2017-02-02
相关资源
最近更新 更多