如何在python中输入数字直到输入特定字符串
当我遇到这个问题时,我正在完成python书籍中的问题 编写一个程序,重复读取数字,直到用户输入“完成”。输入完成后,打印数字的总数、计数和平均值 我的问题是,当计算机显式检查数字时,我不知道如何检查用户是否专门输入了字符串“done”。下面是我如何处理这个问题的如何在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
#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原则解决这个问题。