求和函数概率类型错误:+ 不支持的操作数类型:“int”和“str”
Posted
技术标签:
【中文标题】求和函数概率类型错误:+ 不支持的操作数类型:“int”和“str”【英文标题】:Sum function prob TypeError: unsupported operand type(s) for +: 'int' and 'str' 【发布时间】:2015-01-11 10:59:37 【问题描述】:我是 python (PYTHON 3.4.2) 的新手,我正在尝试制作一个添加和除以查找用户输入的平均值或平均值的程序,但我不知道如何添加我收到的号码。
当我在命令提示符下打开程序时,它会接受我输入的数字,并且如果我使用打印功能也会打印它,但它不会将数字相加。
我收到此错误:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我的代码如下:
#Take the user's input
numbers = input("Enter your numbers followed by commas: ")
sum([numbers])
任何帮助将不胜感激。
【问题讨论】:
能否给个完整的回溯? 【参考方案1】:input
将输入作为字符串
>>> numbers = input("Enter your numbers followed by commas: ")
Enter your numbers followed by commas: 1,2,5,8
>>> sum(map(int,numbers.split(',')))
16
你告诉用户输入用逗号分隔,所以你需要用逗号分割字符串,然后将它们转换为 int 然后求和
演示:
>>> numbers = input("Enter your numbers followed by commas: ")
Enter your numbers followed by commas: 1,3,5,6
>>> numbers
'1,3,5,6' # you can see its string
# you need to split it
>>> numbers = numbers.split(',')
>>> numbers
['1', '3', '5', '6']
# now you need to convert each element to integer
>>> numbers = [ x for x in map(int,numbers) ]
or
# if you are confused with map function use this:
>>> numbers = [ int(x) for x in numbers ]
>>> numbers
[1, 3, 5, 6]
#now you can use sum function
>>>sum(numbers)
15
【讨论】:
【参考方案2】:input
会给你字符串,你正在尝试用 int 连接字符串。
【讨论】:
【参考方案3】:首先您需要将“数字”的元素转换为 int,无需去除逗号或空格。这段代码非常简单,运行良好。
numbers = input("Enter your numbers followed by commas: ")
numbers_int = [int(x) for x in numbers]
numbers_sum = sum(numbers_int)
print numbers_sum
【讨论】:
我收到一个 ValueError: invalid literal for int() with base 10: "," 你如何输入你的数字?我这样测试它:2、3、4等等。更新:我用 "2 , 3 , 4" 和 "2 , 3 , 4" 以及其他可能的变体对其进行了测试,它可以工作。 哦,我认为这是因为我使用的是 python 3.x.x,所以我必须使用“eval(input())”而不是“input()”来获得相同的结果。当我这样做时,它工作得很好。【参考方案4】:试试下面的代码。这个对我有用。实际上input()
尝试将输入作为 Python 表达式运行。但是raw_input()
将输入作为字符串。 input()
存在于 Python 3.x 中。您可以找到更多详细信息 here
numbers = input("Enter your numbers followed by commas: ") ## takes numbers as input as expression
print sum([i for i in numbers]) ## list comprehension to convert the numbers into invisible list. This is done because `sum()` runs only on iterable and list is iterable.
输出:
Enter your numbers followed by commas: 1,2,3,4
10
【讨论】:
是的,我有 Python 3.4,所以我尝试了你的代码,但使用了“eval(input())”而不是“input()”,并且成功了,谢谢 欢迎您!我很高兴能帮上忙。【参考方案5】:简单:列表元素存储为字符串 :) 所以你必须将它们全部转换为 int
【讨论】:
以上是关于求和函数概率类型错误:+ 不支持的操作数类型:“int”和“str”的主要内容,如果未能解决你的问题,请参考以下文章
Unsupported operand types 不支持的操作数据类型