【问题标题】:Stop the while loop if enter the negative number如果输入负数,则停止 while 循环
【发布时间】:2021-09-28 19:51:50
【问题描述】:

我开始学习 Python,现在我被 WHILE 循环卡住了,所以如果你能给我一些建议,我将不胜感激。

所以,这是我的代码,如果我输入负数并打印(“错误输入”),我需要停止整个代码,但我的代码在输入负数时仍然通过并打印我也(“平均价格:”)。 我不想在输入时打印(“平均价格为:”),例如(2,3,6, -12) - 仅用于打印(“输入错误”)。我现在我的最后一次打印在 WHILE 循环中,但我正在尝试找到解决方案:) 可能有更简单的解决方案,但正如我所说,我是新手,仍在学习 提前谢谢你。

price= int(input("Enter the price: "))

price_list=[]

while price!= 0:
    price_list.append(price)
    if price< 0:
       print("Wrong entry")
       break
    price=int(input())

    price_sum= sum(price_list)
print(f"Avg price is: {price_sum / len(price_list)}")

【问题讨论】:

  • 因为平均价格是在循环之外计算的。输入正数或负数都没有关系
  • 您上面的代码可以按照您希望的方式工作。当输入负数时,while 循环停止。但其余代码也会运行。
  • 应该有一个合适的条件来停止while循环。否则,您将永远输入值。如果我输入 0,循环将停止,但我必须再次重新输入之前的正确值。

标签: python while-loop break


【解决方案1】:

这里有两个选择。您可以在 while 守卫中包含检查,例如 while price &gt; 0 您可以使用关键字 break 并在循环中添加 if 守卫,例如这样

if price < 0:
    break

由于您第一次输入价格时它在循环之外,最好的办法是在 while 循环中添加保护,以便在第一次输入为负时跳过它。

【讨论】:

  • price &gt; 0表示价格不能为零,所以price != 0是多余的
【解决方案2】:

因为它在循环之外,它会一直运行。

所以试试这个:

price= int(input("Enter the price: "))

price_list=[]

while price != 0:
    if price< 0:
       print("Wrong entry")
       break
    price_list.append(price)
    price=int(input())            
    price_sum= sum(price_list)
if price > 0:
    print(f"Avg price is: {price_sum / len(price_list)}")

【讨论】:

  • 如果您在任何正数之后给出负数,则此方法不起作用。它将打印,因为 price_lis 数组中有项目。
  • @ex4 误读了问题,编辑了我的答案,现在应该可以使用了
  • 如果我输入所有正价,它应该返回平均价格,0 是循环的中断。它不会返回正数的平均价格
【解决方案3】:

如果你不想在得到负数时运行其余代码,你可以这样做:

price= int(input("Enter the price: "))
ok = True
price_list=[]

while price!= 0:
    price_list.append(price)
    if price< 0:
       print("Wrong entry")
       ok = False
       break
    price=int(input())
if ok:
    price_sum= sum(price_list)
    print(f"Avg price is: {price_sum / len(price_list)}")

【讨论】:

    【解决方案4】:

    您正在这里进行程序编程。你 print 在循环外声明它。此外,没有检查语句的控制语句。所以不管输入如何,都会执行 print 语句。

    由于任何非空列表都是真值,因此您可以检查列表是否为空或包含某些元素

    price= int(input("Enter the price: "))
    
    price_list=[]
    
    while price!= 0:
        
        if price< 0:
           print("Wrong entry")
           break
        price_list.append(price)
        price=int(input())
    if price_list:
        price_sum= sum(price_list)
        print(f"Avg price is: {price_sum / len(price_list)}")
    

    【讨论】:

      【解决方案5】:

      使用 while/else 循环会产生您想要的行为。

      • 如果遇到 while 循环中的中断,则 else 中的代码不会运行

      代码

      price= int(input("Enter the price: "))
      
      price_list=[]
      
      while price!= 0:
          price_list.append(price)
          if price< 0:
             print("Wrong entry")
             break
          price=int(input())
      
          price_sum= sum(price_list)
      else:
          print(f"Avg price is: {price_sum / len(price_list)}")
      

      【讨论】:

      • 是的,这就是我需要的 ELSE :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多