Python2.7-:在列表中存储输入的用户输入值

时间:2017-02-01 12:10:04

标签: python python-2.7 user-input

我是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!')

只需知道如何在不使用空格或逗号的情况下存储到列表中, 用户应该能够输入上面示例中显示的值,并且这些值应存储在列表中。

提前致谢。

1 个答案:

答案 0 :(得分:1)

在Python 2.7中,输入将evalulate任何条目,如果输入不是正确的Python类型,则会失败。最好在这里使用raw_input,因为任何条目都将被视为字符串。如果您转到Python 3,则raw_input被删除,而input会影响raw_input的行为。因此,您的示例希望您为其提供'45''done',而不是45done

但是您无法将任何值存储到列表中的原因是因为您不是首先将它们添加到列表中。但由于我们也切换到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。