如何让这个函数循环?蟒蛇

时间:2017-10-22 09:30:38

标签: python

所以我希望代码几乎可以添加列表中所有数字的总和,直到满足列表的长度。每个偶数都被分为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

1 个答案:

答案 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

现在看看它的整洁程度如何?希望这有帮助!

相关问题