如何在python中输入数字直到输入特定字符串

如何在python中输入数字直到输入特定字符串,python,Python,当我遇到这个问题时,我正在完成python书籍中的问题 编写一个程序,重复读取数字,直到用户输入“完成”。输入完成后,打印数字的总数、计数和平均值 我的问题是,当计算机显式检查数字时,我不知道如何检查用户是否专门输入了字符串“done”。下面是我如何处理这个问题的 #Avg, Sum, and count program total = 0 count = 0 avg = 0 num = None # Ask user to input number, if number is 0 prin

当我遇到这个问题时,我正在完成python书籍中的问题

编写一个程序,重复读取数字,直到用户输入“完成”。输入完成后,打印数字的总数、计数和平均值

我的问题是,当计算机显式检查数字时,我不知道如何检查用户是否专门输入了字符串“done”。下面是我如何处理这个问题的

#Avg, Sum, and count program

total = 0
count = 0
avg = 0
num = None

# Ask user to input number, if number is 0 print calculations
while (num != 0):
    try:
        num = float(input('(Enter \'0\' when complete.) Enter num: '))
    except:
        print('Error, invalid input.')
        continue

    count = count + 1
    total = total + num

avg = total / count
print('Average: ' + str(avg) + '\nCount: ' + str(count) + '\nTotal: ' + str(total))

我使用了一个整数(0)来查看用户是否完成了数字输入。

我认为解决问题的更好方法如下:

input_str = input('(Enter \'0\' when complete.) Enter num: ')
if (input_str.isdigit()):
    num = float(input_str)
else:
    if (input_str == "done"):
        done()
    else:
        error()

通过这种方式,您可以控制输入数字的情况和输入字符串的情况(不是通过try/except方案)。

我认为解决问题的更好方法如下:

input_str = input('(Enter \'0\' when complete.) Enter num: ')
if (input_str.isdigit()):
    num = float(input_str)
else:
    if (input_str == "done"):
        done()
    else:
        error()
通过这种方式,您可以控制输入数字的情况和输入字符串的情况(不是通过尝试/例外方案)。

保持尝试-例外方法,您只需检查用户输入的字符串是否已完成,而无需转换为浮点数,并在循环时中断
。另外,最好指定要捕获的错误<在这种情况下,代码>值错误

while True:
    num = input('(Enter \'done\' when complete.) Enter num: ')
    if num == 'done':
        break
    try:
        num = float(num)
    except ValueError:
        print('Error, invalid input.')
        continue
保持Try-Except方法,只需检查用户输入的字符串是否已完成,而无需转换为float,并在循环时中断
。另外,最好指定要捕获的错误<在这种情况下,代码>值错误

while True:
    num = input('(Enter \'done\' when complete.) Enter num: ')
    if num == 'done':
        break
    try:
        num = float(num)
    except ValueError:
        print('Error, invalid input.')
        continue

然后不要立即将其转换为数字。测试值是否等于0?然后不要立即将其转换为数字。测试值是否等于0?在Python中,try except始终优于if else。请参阅。我同意安全性比抱歉要好,但在这种情况下,在使用try/except方案时,您会失去对输入分析的“控制”。@Rohi非常感谢您的帮助=)。isdigit()非常有用powerful@Rohi,应该没什么关系,但是,我已经添加了我的答案,展示了如何使用EAFP原则来解决这个问题。在Python中,try-except总是比if-else更受欢迎。请参阅。我同意安全性比抱歉要好,但在这种情况下,在使用try/except方案时,您会失去对输入分析的“控制”。@Rohi非常感谢您的帮助=)。isdigit()非常有用powerful@Rohi,这应该没有多大关系,但是,我已经添加了我的答案,说明了如何使用EAFP原则解决这个问题。