Я думаю, вы имели в виду:
def mult_of_3_or_5():
for x in range(21):
if x % 5 == 0:
yield x
if x % 3 == 0: # I suspect you meant to count twice if both 3 and 5 are divisors, if not make it elif instead
yield x
print(sum(mult_of_3_or_5()))
Что по сути суммирует все числа, кратные 3 и 5, считая число дважды, в случае, если оно кратно обоим (например, 15).
Возвращает 113
Вам следует ознакомиться с концепцией генератора в python - это то, что я ввел здесь с помощью ключевого слова yield
. В отличие от return
, он не завершает функцию после вызова - что, по сути, именно я понимаю вы хотите достичь.
Чтобы прочитать о генераторе :
https://wiki.python.org/moin/Generators