【问题标题】:Confused with output from if condition within the while loop对 while 循环中 if 条件的输出感到困惑
【发布时间】:2015-11-25 23:42:37
【问题描述】:

我在乞求学习编程,这是我编写的第一个 python 代码。 嗯,这是一个猜谜游戏,如果用户输入数字 5 将打印“你赢了”,如果大于 5 打印“太高”,如果小于 5 打印“太低”。

我为此编写了代码,但是当用户输入数字 5 时, 当输入应该输出消息“你赢了”的数字 5 时,它会打印“太低”并打印“你赢了”这不是我想要的。 我需要解释为什么代码的输出说“太低”并说“你赢了” 用户输入 5 个数字??

print("Welcome")
guess = 0
while guess != 5:
    g = input("Guess a number: ")
    guess = int(g)
    if guess > 5:
        print("too high")
    else:
        print("too low")
print("You won")

结果是:

Guess a number: 4
too low
Guess a number: 6
too high
Guess a number: 5
**too low  // this isn't supposed to be, this is wrong
You won**

【问题讨论】:

    标签: python


    【解决方案1】:

    您的else 需要测试该值不是5

    else:
    

    应该是这样的

    elif guess < 5:
    

    因为5 不大于5

    【讨论】:

      【解决方案2】:

      问题在于您的猜测 = 5。

      第一个 if 是负数,所以它移动到 else 并打印“too low”。

      改变

      else:
              print("too low")
      

      elif guess < 5:
             print("too low")
      

      这不会再发生了。 初学者的一个好技巧是分析“边界情况”,在这种情况下猜测 = 5,然后分析您的程序将在那里做什么。

      【讨论】:

      • 我知道这个解决方案但是我想解释一下为什么代码不考虑 while 条件!= 5 和 else 条件一起只打印“你赢了”
      • while 循环(您所说的那个)的条件仅在整个循环之后评估,以检查是否必须启动一个新循环。所以它只会在“else”子句之后被评估,而不是在“if”和“else”之间。这样你就明白了吗?
      • 每次调用 while 循环时,while 循环体中的所有内容(所有左侧有一些空格的代码)都会运行。所以在while循环的开始,用户可以输入一个'guess'的值,循环进入'if',循环进入'else'然后检查条件(!= 5)。如果此时guess 等于5,它将结束循环并进入打印语句(你赢了)。如果guess 不是5(例如4),循环将再次开始,用户将能够为“guess”提供新的输入。然后重复这个过程,直到条件满足,循环结束
      猜你喜欢
      • 1970-01-01
      • 2023-01-13
      • 2018-10-03
      • 1970-01-01
      • 2016-07-13
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多