添加除某些数字/ python之外的数字总和

时间:2017-11-22 06:31:27

标签: python

使用python的新手。想知道如何使用while循环创建一个函数来获取列表中某个数字之前的数字总和。例如,我希望在列表[1,2,5,2,3,2]中弹出的数字3之前获得所有数字的总和,这将导致10。使用我的错误代码,我的函数没有'考虑3并且只添加所有数字。

def nothree(nt):
    while nt != 3: 
        list_sum = sum(nt)
        return list_sum

4 个答案:

答案 0 :(得分:1)

def nothree(nt):
  i = 0
  sum = 0
  while nt[i]: 
    if nt[i] is 3:
       break
    sum += nt[i]
    i += 1
  return sum

这样你就可以出于任何原因保持while循环。但是在python中你也可以这样:

def nothree(nt):
  for i in nt[:-2]: 
     sum += [i]
  return list_sum

答案 1 :(得分:0)

您可以将itertools.takewhile用于此模式:

from itertools import takewhile
def nothree(nt):
    return sum(takewhile(lambda x: x != 3, nt))

>>> nothree([1, 2, 5, 2, 3, 1])
10

虽然Fejs为您提供了一个基于循环的指导解决方案,但我可能会添加这个单行黑客,无需任何库:

return sum(x if x != 3 else next(iter([])) for x in nt)

StopIteration引发的next(iter([]))将停止第一个3上的生成器。

答案 2 :(得分:0)

这样的事情:

def nothree(nt):
    sum = 0
    for n in nt:
        if n == 3:
            break
        sum += n
    return sum

如果列表中有3个,它将打破循环并返回3之前的数字总和。如果列表中没有3,则总和将是列表的总和。最后,如果列表中没有数字,则sum将为0。

答案 3 :(得分:0)

你也可以做一行

nt = [1,2,5,2,3,2]
x = sum(nt[:nt.index(3)])

nt[:nt.index(3)]会在列表中第一次出现3之前为您提供列表。即。 [1, 2, 5, 2]