当我遇到这个问题时,我正在完成一本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)来查看用户是否输入了数字。
答案 0 :(得分:2)
保持 Try-except 方法,您只需检查用户输入的字符串是否为done
而不转换为float,并中断while
循环。此外,指定要捕获的错误总是更好。在这种情况下ValueError
。
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
答案 1 :(得分:1)
我认为解决问题的更好方法如下:
env VIRTUALBOX_MEMORY_SIZE=4096 docker-machine ...
通过这种方式,您可以控制输入数字的情况和输入字符串的情况(不通过try / except方案)。