当输入是特定字符串时,如何中断while循环?

时间:2019-09-25 23:18:15

标签: python

当其中之一是字符串“ F”时,我需要停止添加用户输入。 因此,基本上,如果我的输入是int,则:+ =结果,如果相同的输入变量是字符串,则需要停止并将它们加在一起。

我的代码实际上可以正常工作,并且具有相同的输入和输出锻炼要求,但是我对解决它的方式非常不满意。

这是我的代码:

import numbers
cat = int(input())


def norm(cat):
    res = 0
    for n in range(cat):
      x = int(input())
      res += x

    print(res)

def lon():
    res = 0
    while 2 > 1:
     try :
         y = int(input())
         if isinstance(y,int):
           res +=y
     except:
        print(res)
        break




if cat >= 0 :
    norm(cat)
else:
    lon()

通过检查我的变量是否为int,它实际上以一种愚蠢的方式打破了while循环。 (我需要通过按F使其停止) 有没有更清洁,更短的方法来获得相同的输出?

我期望的实际输入输出示例:

in:       out:16    (1 + 3 + 5 + 7)
4
1
3
5
7

in:       out:37     (1 + 3 + 5 + 7 + 21)
-1
1
3
5
7
21
F

1 个答案:

答案 0 :(得分:2)

您可以写得短一些:

result = 0

while True:
    line = input()
    try:
        result += int(line)
    except ValueError:
        break

print(result)

注意:

    不需要
  • import numbers。 (我什至不知道它的存在!)
  • 您可以使用2 > 1代替True
  • 您无需检查isinstance(..., int),因为int()会强制执行。
  • 这将一直运行,直到到达任何非整数字符串为止。

如果您只想专门检查“ F” ,那么会容易一些:

result = 0

while True:
    line = input()
    if line == "F":
        break
    result += int(line)

print(result)

请注意,如果不使用try,则输入非整数,非"F"的字符串会使程序崩溃。