【发布时间】:2017-10-06 08:19:42
【问题描述】:
我正在编写一个 Python 函数,想对元组中的所有数字求和,但运行后出错
def sumall(*x):
sm=0
for i in len (x):
sm= x[i] + sm
print sm
当我输入时,它包含在对象中是不可迭代的错误
总和 (1,2,3)
请帮帮我
【问题讨论】:
-
for i in x会做
标签: python
我正在编写一个 Python 函数,想对元组中的所有数字求和,但运行后出错
def sumall(*x):
sm=0
for i in len (x):
sm= x[i] + sm
print sm
当我输入时,它包含在对象中是不可迭代的错误
总和 (1,2,3)
请帮帮我
【问题讨论】:
for i in x 会做
标签: python
def sumall(x):
return sum(x)
sumall((1, 2, 3))
【讨论】:
正如 pydev 回答的那样,有一个内置的 sum 方法可以完全按照您的要求进行操作。所以,你最好使用它。但是,如果您是在编写此代码进行锻炼,则几乎没有问题
def sumall(*x):
sm=0
.<---- there shouldn't be space between len and (x) and range is required
for i in range(len(x)):
sm= x[i] + sm <---- this can be converted to sm += x[i] which appends
print sm
len 返回一个不可迭代的int。另一方面,range 可以。
【讨论】:
您的问题是for x in l 的语法将l 作为可迭代对象-list、tuple 等。
语句len(x) 返回一个整数,它绝不是可迭代的。
您应该简单地遍历x。
def sumall(*x):
sm=0
for item in x:
sm= item + sm
print sm
但是,如果您确实需要按索引循环(例如,当您一次循环两个可迭代对象时),您可以使用 range(),它返回一个数字列表(从 0 到指定的数字)可以循环。
def sumall(*x):
sm=0
for i in range(len(x)):
sm= x[i] + sm
print sm
【讨论】: