我正在学习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'
谢谢,
塞缪尔
当你打电话给input()
时,你会收到一个字符串。您必须先使用int()
或float()
将值转换为数字,然后才能求它们。
测试x is str
不符合你的想法:你正在测试x
是实际的str
类型,它不是。要测试该值是否是str
的实例,请使用isinstance(x, str)
。
顺便说一下,你不需要一个循环来计算数字:列表中有一个属性可以直接告诉你。你也不需要循环来总结它们,还有一个内置函数。