Вы прервали цикл for с return
до окончания цикла.Вам нужно сохранить накопительную сумму и затем вернуть ее после завершения цикла.
Кроме того, вам необходимо понять, что такое «одиночная строка для цикла» в Python.Давайте посмотрим, что означает return
в вашем первом блоке кода:
(sum(int(digit) for digit in str(number)))
Мы можем превратить эту строку в несколько шагов:
1 Получить массив цифр в виде String
Этот шаг может быть выполнен следующим образом
def get_digits_as_string(num):
return [digit for digit in str(num)]
Запустив вышеуказанную функцию, вы можете увидеть
>>> get_digits_as_string(12345)
['1', '2', '3', '4', '5']
2 Преобразовать массив строк в массив целых чисел (также в одномстрока)
Мы просто набираем один элемент string
в массиве в int
def get_digits_as_int(num):
return [int(digit) for digit in str(num)]
, если вы запустите его, вы получите:
>>> get_digits_as_int(12345)
[1, 2, 3, 4, 5]
3 Суммируйте массив int
Это эквивалентно вашему первому блоку кода
def digit_sum(num):
return sum([int(digit) for digit in str(num)])
Вот сообщение, которое полезно, если вы хотите узнать больше о Single Line for Loops: https://blog.teamtreehouse.com/python-single-line-loops
Надеюсь, мой ответ поможет.