循环并检查是否为整数

Loop and check if integer

我有一个练习:

Write code that asks the user for integers, stops loop when 0 is given. Lastly, adds all the numbers given and prints them.

到目前为止,我做到了:

a = None
b = 0
while a != 0:
    a = int(input("Enter a number: "))
    b = b + a
print("The total sum of the numbers are {}".format(b))

但是,如果输入不是整数,代码需要检查输入并给出消息。

在网上搜索时发现了这一点,但对于我来说,我无法将这两个任务结合起来。

while True:
    inp = input("Input integer: ")
    try:
        num = int(inp)
    except ValueError:
        print('was not an integer')
        continue
    else:
        total_sum = total_sum + num
        print(total_sum)
        break

我怀疑你在某处需要 if 但无法解决。

根据您的尝试,您可以合并这两个任务,例如:

a = None 
b = 0 
while a != 0: 
    a = input("Enter a number: ") 
    try: 
        a = int(a) 
    except ValueError: 
        print('was not an integer') 
        continue 
    else: 
        b = b + a  
print("The total sum of the numbers are {}".format(b))

如果您想使用 If-Statement,则不需要 else:如果数字不是 0,它将重新开始,直到某个时候为 0。

total_sum = 0
while True:
    inp = input("Input integer: ")
    try:
        num = int(inp)
    except ValueError:
        print('was not an integer')
        continue
    total_sum = total_sum + num
    if num == 0:
        print(total_sum)
        break

由于 input 的 return 是一个字符串,因此可以使用 isnumeric 看不到给定值是否为数字。

如果是这样,可以将 string 转换为 float 并使用 is_integer.[=18 检查给定的 float 是否为 integer =]

a = None 
b = 0 
while a != 0: 
    a = input("Enter a number: ") 
    if a.isnumeric():
        a = float(a)
        if a.is_integer():
            b += a
        else:
            print("Number is not an integer")
    else:
        print("Given value is not a number")
        
print("The total sum of the numbers are {}".format(b))