python3代码中的错误 - 尝试对列表求和

时间:2018-03-02 10:55:58

标签: python python-3.x list python-3.4

我正在学习python3,而且我对我正在进行的练习遇到了阻碍。

以下是我要解决的问题:

“编写一个重复读取数字的程序,直到用户输入”完成“。输入”完成“后,打印出数字的总数,计数和平均值。如果用户输入的数字不是数字,检测他们的错误使用try和except并打印错误消息并跳到下一个数字。“

以下是我的回答:

numslist = list()

while True:
    x = input("Enter a number: ")
    numslist.append(x)
    if x is str:
        print ("bad data")
    if x == 'done':
        break

numslistt = numslist[0:-1]

count = 0
for a in numslistt:
    count = count + 1

total = 0
for thing in numslistt:
    total = total + thing

print(numslistt)
print(count)
print(total)

我在尝试在列表中添加数字时遇到错误?有人可以就我做错了什么提出建议吗?

这是我得到的回溯:

Traceback (most recent call last):
  File "test.py", line 19, in <module>
    total = total + thing
TypeError: unsupported operand type(s) for +: 'int' and 'str'

谢谢,

塞缪尔

1 个答案:

答案 0 :(得分:2)

当你拨打input()时,你会收到一个字符串。您必须先使用int()float()将您的值转换为数字,然后才能将它们相加。

测试x is str没有按照您的想法进行操作:您正在测试x是否为实际的str类型,它不是。要测试该值是否为str的实例,请使用isinstance(x, str)

顺便说一句,你不需要一个循环来计算数字:列表上有一个属性可以直接告诉你。你也不需要一个循环来总结它们,那里有一个内置函数。