无法在空字符串上中断

问题描述 投票:0回答:1

我尝试获取不超过10个用户输入。用户可以选择通过输入空字符串来停止提供输入]

container_size = []
for i in range(10):
   while True:
      container_size.append(float(input('What is the size of your container?: ')))
      if input('What is the size of your container?: ') == '':
         break
         if i <= 1:
            refund = 0.10
         else:
            refund = 0.25
print(refund)

如果未提供任何输入,尝试中断时我总是收到错误消息。我能做什么?我也得到了10多个输入。

python conditional-statements break
1个回答
0
投票

我相信这就是您想要的:

container_size = []
for i in range(10):
    while True:
        inp = input('What is the size of your container?: ')
        if inp == '':
            break
        try:
            container_size.append(float(inp))
            if i <= 1:
                refund = 0.10
            else:
                refund = 0.25
            print("refund:", refund)
        except ValueError:
            print("cant convert")

0
投票

您两次调用input():一次用于添加到容器,第二次在if中。因此,对于每次迭代,您都要求2个输入。因此,您总共有20个输入而不是10个。将其放在变量中,并询问变量是否为空/将变量添加到容器中。

您的break语句当前引用if语句,而不是while语句,因为它与最接近的if语句交互。您可以使用flag克服此问题,并在while语句的末尾对其进行检查。

© www.soinside.com 2019 - 2024. All rights reserved.