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

问题描述 投票:-2回答:1

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

这是我想要解决的问题:

“编写一个重复读取数字的程序,直到用户输入”完成“。输入”完成“后,打印出数字的总数,计数和平均值。如果用户输入的数字不是数字,请使用尝试除外,打印错误信息并跳到下一个号码。“

这是我的答案:

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:

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

谢谢,

塞缪尔

python python-3.x list python-3.4
1个回答
2
投票

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

测试x is str不符合你的想法:你正在测试x是实际的str类型,它不是。要测试该值是否是str的实例,请使用isinstance(x, str)

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

© www.soinside.com 2019 - 2024. All rights reserved.