Функция, использующая цикл for, который суммирует числа в списке до достижения определенного числа - PullRequest
0 голосов
/ 01 октября 2018

Я хотел бы использовать цикл for, чтобы просмотреть список чисел и остановиться, когда он достигнет определенного числа, например 4, и вернуть сумму чисел, предшествовавших ему.

Таким образом, если список равен [1, 2, 4, 0, 3, 2], функция вернет 3 после суммирования.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете использовать itertools.takewhile:

from itertools import takewhile

res = sum(takewhile(lambda x: x < 4, [1, 2, 4, 0, 3, 2]))  # 3

Документы для itertools.takewhile дают эквивалентный генератор, который можно использовать для непосредственной реализации логики:

def takewhile(predicate, iterable):
    # takewhile(lambda x: x < 4, [1, 2, 4, 0, 3, 2]) --> 1 2
    for x in iterable:
        if predicate(x):
            yield x
        else:
            break
0 голосов
/ 01 октября 2018

Вот два способа ( с и без функции) с использованием цикла for.Условие if выйдет из цикла for, как только элемент получит 4, иначе оно продолжит суммирование.Выходя из цикла for, вы можете распечатать сумму s

без функции

lst = [1, 2, 4, 0, 3, 2]
s = 0
for l in lst:
    if l == 4:
        break
    s += l

print ("The sum is %d" %s) 

> The sum is 3

с функцией

lst = [1, 2, 4, 0, 3, 2]
num = 4

def summ(lst, num):
    s = 0
    for l in lst:
        if l == num:
            return s
        s += l

print ("The sum is %d" %summ(lst, num))   

> The sum is 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...