【问题标题】:Loop doesn't stop循环不会停止
【发布时间】:2014-04-21 18:17:48
【问题描述】:
num_1 = input("Please enter first number: ")
num_2 = input("Please enter second number: ")    
print("The numbers you have chosen are",num_1,"and",num_2)

while num_1 or num_2 > 0:
    if num_1 < num_2:
        print("First number entered is greater.")

    elif num_1 > num_2:
        print("Second number entered is greater.")

    else:
        print("Both numbers entered are equal.")

print("Program terminated...")

【问题讨论】:

  • 为什么在这里根本使用循环? in 循环没有任何变化,因此循环的条件也不会改变。你有一个没有明显目标的无限循环。
  • 没错!这就像问为什么while True: 永远不会停止。您要么必须有一个最终变为 false 的条件,要么必须在循环内有一个 break 来结束它。并且应该提到你的意思是说while num_1 &gt; 0 and num_2 &gt; 0:,虽然这不会解决你的主要问题。

标签: python python-3.x while-loop


【解决方案1】:

您的 while 循环中的条件表达不正确。你的意思是“只要至少有一个数字大于0”。

但是,你表达的是这样的:

while num_1 or num_2 > 0

Python 将其读取为:

while ((num_1) or (num_2 > 0)):

因此,条件询问num_1 的布尔值,仅当num_10 时才计算为False。它还询问num_2 是否大于0 并采用这两个布尔值的OR

这大致翻译为:

while (num_1 is not 0 or num_2 is larger than 0)

你要找的是

while (num_1 is larger than 0 or num_2 is larger than 0)

... 可以写成:

while num_1 > 0 or num_2 > 0

此外,您永远不会在您的 while 循环中重新定义 num_1num_2,这就是为什么它会不停地遍历您的循环。您可以按以下方式解决此问题:

同时: # 你的 if 语句 num_1 = input("请输入第一个数字:") num_2 = input("请输入第二个数字:")
print("你选择的数字是",num_1,"and",num_2)

这会一直要求用户输入,直到他们输入两个非正数

【讨论】:

    【解决方案2】:

    它永远不会退出 while 循环。用另一个 if 替换 while 语句

    【讨论】:

      【解决方案3】:

      试试这个:

          num1 = int(input('Enter first number: '))
          num2 = int(input('Enter second number: '))
          if num1 == num2:
              print('Both are equal.')
          elif num1 > num2:
              print('Number 1 is greater.')
          elif num1 < num2:
              print('Number 2 is greater.')
          print('Program terminated.')
      

      永远记住,当你想从用户那里得到一个数字时,你需要输入 int(input([prompt])) 而不是 input([prompt])。

      你不需要这个程序的“while”循环,但如果你真的想要一个,那么你可以这样做:

          num1 = int(input('Enter first number: '))
          num2 = int(input('Enter second number: '))
          while True:
              if num1 == num2:
                  print('Both are equal.')
                  break
              elif num1 > num2:
                  print('Number 1 is greater.')
                  break
              elif num1 < num2:
                  print('Number 2 is greater.')
                  break
          print('Program terminated.')
      

      'break' 告诉循环中断并继续执行程序。

      【讨论】:

        猜你喜欢
        • 2019-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        • 2021-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多