【问题标题】:Python not able to identify sum(). Returns an error [duplicate]Python 无法识别 sum()。返回错误[重复]
【发布时间】:2020-10-05 18:42:55
【问题描述】:

我是初学者,使用 python 3.6,IDE Spyder(Anaconda)。 我正在尝试使用 for 循环编写前 10 个奇数并添加它们。 以下是代码:

输入

x = list(range(0,10))
print(x)
a = []

for i in x:
    y = 2*i + 1
    a.append(str(y))
print(a)

输出:

['1', '3', '5', '7', '9', '11', '13', '15', '17', '19']

但如果我使用print(sum(a)) 语法:

输入:

x = list(range(0,10))
print(x)
a = []

for i in x:
    y = 2*i + 1
    a.append(str(y))
print(a)
print(sum(a))

输出:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

如何使用 sum() 获得列出的所有奇数的总和?

【问题讨论】:

  • 如果您以后想将它们视为数字,请不要将数字 作为字符串 附加到列表中。
  • a.append(str(y)) 应该是a.append(y),或者更好的是,只需先执行x = list(range(0,10)),然后执行sum(x),两行就完成了。
  • @Torxed 这段代码不仅仅是list(range(0, 10))...尽管它可以轻松地在两行中完成。
  • @deceze 抱歉,忘记了2*i + 1,这需要使用enumerate() 来获取索引并进行列表理解。想法仍然认为主要问题是str(y) tho :)

标签: python python-3.x list


【解决方案1】:

只需更改 a.append(str(y))

a.append(y),现在为什么会出错?这是因为您将元素添加为字符串,然后使用了仅对整数数据类型有效的 sum 运算符!

您更正后的代码如下:

x = list(range(0,10)) 
print(x) 
a = [] 
for i in x: 
    y = 2*i + 1
    a.append(y)
print(a) 
print(sum(a))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 2022-01-12
    • 2020-04-06
    • 2013-12-13
    • 2014-02-26
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多