我是python的新手并且遇到了下面解释的场景 - :
这是我提到的.pdf中的一个。如果有人能指导或分享其他资源,那就太棒了。
重复读取数字直到用户输入“完成”的程序。输入“完成”后,打印出数字的总数,计数和平均值。如果用户输入的数字不是数字,请使用try和except检测错误并打印错误消息并跳到下一个数字。
Enter a number: 4
Enter a number: 5
Enter a number: bad data
Invalid input
Enter a number: 7
Enter a number: done
16 3 5.333333333333333*
我无法将值存储到列表中。
尝试了这个逻辑 - :
while True:
line = input('Enter Number-: ')
if type(line) == int():
continue
if line == 'done':
break
print(line)
print('Done!')
只需知道如何在不使用空格或逗号的情况下存储到列表中, 用户应该能够输入上面示例中显示的值,并且这些值应存储在列表中。
提前致谢。
答案 0 :(得分:1)
在Python 2.7中,输入将evalulate任何条目,如果输入不是正确的Python类型,则会失败。最好在这里使用raw_input
,因为任何条目都将被视为字符串。如果您转到Python 3,则raw_input
被删除,而input
会影响raw_input的行为。因此,您的示例希望您为其提供'45'
或'done'
,而不是45
或done
。
但是您无法将任何值存储到列表中的原因是因为您不是首先将它们添加到列表中。但由于我们也切换到raw_input,我们不知道该条目是否是有效数字。所以我们需要尝试将其转换为数字,如果它不是一个,那么检查它是否是关键字告诉代码停止。
values = [] # make an empty list
while True:
line = raw_input('Enter Number-: ') # all entries here are considered strings
try:
num = int(line) # convert to an integer
values.append(num) # add to list
continue # return to input query
except: # int(line) threw an error, so not a valid number input
if line == 'done': # check if should stop
break # get out of loop
else: # anything else
print 'bad data, invalid input'
continue # return to input query
print 'Done!\n'
print 'total:', sum(values)
print 'count:', len(values)
print 'average:', sum(values) / float(len(values))
如果您输入的不仅仅是整数,您可能希望将num = int(line)
更改为num = float(line)
以处理小数输入,因为int只接受整数。
Enter Number-: 4
Enter Number-: 5
Enter Number-:
bad data, invalid input
Enter Number-: 7
Enter Number-: done
Done!
total: 16
count: 3
average: 5.33333333333
Tutorial也可能有助于学习Python。