对于测验问题,必须使用嵌套列表来查找每行的总和,而不使用内置总和()
我的代码(1)
def row_sums(square):
""" Takes a nested list and returns the sum of the row"""
row_1 = square[0]
for sum_1 in row_1:
for sum_r_1 in sum_1:
sum_row_1 = 0
sum_r_1 += sum_row_1
return sum_r_1
这个问题是我得到的int对象不可迭代
或
我的代码(2)
def row_sums(square):
""" Takes a nested list and returns the sum of the row"""
row_1 = square[0]
for sum_1 in row_1:
sum_r_1 = 0
sum_r_1 += sum_1
return sum_r_1
我只获得第1行中列表的第一项。在这种情况下,数字为2
来自测验服务器的输入
square = [
[2, 7, 6],
[9, 5, 1],
[4, 3, 8]
]
print(row_sums(square))
预期结果 [15,15,15]
我知道我试图获取atm只是第一行,但是一旦我拥有它我就可以轻松地执行其他行
答案 0 :(得分:1)
你非常接近:
def row_sums(square):
sums = []
for row in square:
rowsum = 0
for num in row:
rowsum += num
sums.append(rowsum)
return sums
答案 1 :(得分:1)
你的代码不起作用是因为
for sum_1 in row_1:
sum_r_1 = 0
sum_r_1 += sum_1
return sum_r_1
每当你转到一个新号码时,你将sum_r_1
设置回0
,然后return
它......所以它会通过第一个号码,添加它,然后立即返回它没有看任何其他数字。
相反,您需要设置开始值并将返回循环:
sum_r = 0
for sum_1 in row:
sum_r += sum_1
return sum_r
这将为您提供第一行。我建议再做一次尝试而不是从SO那里获得完整的解决方案。
答案 2 :(得分:1)
这是一种简单的方法,它遍历列表列表,将内部列表元素添加到一起并将它们附加到另一个列表中。
square =[
[2,2,2],
[1,1,1],
[3,3,3]
]
sumLine=[]
for i in range(len(square)):
s =0
for n in square[i]:
s = s + n
sumLine.append(s)
#results in [6, 3, 9]