如果输入负数,则停止 while 循环

Stop the while loop if enter the negative number

我已经开始学习 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 price > 0 您可以使用关键字 break 并在循环内添加一个 if 守卫,像这样

if price < 0:
    break

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

因为在循环外,所以总是运行。

所以试试这个:

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= 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)}")

您正在此处进行过程编程。你 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)}")

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

  • 如果遇到while循环中的break,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)}")