所以我希望代码几乎可以添加列表中所有数字的总和,直到满足列表的长度。每个偶数都被分为2 ......
现在它只返回列表中的第一个数字。
这里有人可以帮忙吗?
lista = [8,2,3,4,10,6]
def suma2(lista):
i = 0
suma = 0
while i <= len(lista):
if (lista[i] %2 == 0):
suma = suma + lista[i]/2
else:
suma = suma + lista[i]
i = i + 1
return suma
答案 0 :(得分:0)
return
语句突然出现function
- 停止loop
。你只需要将它缩进一个......
您还需要将小于或等于(<=
)的符号更改为小于(<
)的符号。这是因为您将循环到 list
的长度。如果您允许i
达到该长度,因为Python lists
是从0
编入索引的,这将尝试在结束后访问一个值error
!
纠正这两件事之后的代码看起来像是:
lista = [8,2,3,4,10,6]
def suma2(lista):
i = 0
suma = 0
while i < len(lista):
if (lista[i] %2 == 0):
suma = suma + lista[i]/2
else:
suma = suma + lista[i]
i = i + 1
return suma
要改进code
,您可以将while
循环替换为for
循环,iterates
通过lista
中的项目。这是一种更好的方法,因为除了访问i
之外,你永远不会使用变量list
,因此loop
通过elements
lista
更有意义。 1}}并将每个element
分配给变量(而不是索引)......
执行此操作的代码看起来像(我还使用了+=
而不是你如何使用它,以使代码更整洁):
lista = [8,2,3,4,10,6]
def suma2(lista):
suma = 0
for e in lista:
if (e % 2 == 0):
suma += e/2
else:
suma += e
return suma
现在看看它的整洁程度如何?希望这有帮助!