我正在学习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'
谢谢,
塞缪尔
答案 0 :(得分:2)
当你拨打input()
时,你会收到一个字符串。您必须先使用int()
或float()
将您的值转换为数字,然后才能将它们相加。
测试x is str
没有按照您的想法进行操作:您正在测试x
是否为实际的str
类型,它不是。要测试该值是否为str
的实例,请使用isinstance(x, str)
。