Как сложить все данные str? в python
Требуется, чтобы из строки (например, "123") получалось число суммы всех значений (в данном случае 6). Если полученное число больше двух символов, то они должны быть сложены друг с другом. Однако, код выдаёт просто 3. Где может быть ошибка в коде?
def plus(a):
a = list(a)
for i in a:
intnums = int(i)
intlist = []
intlist.append(intnums)
continue
summary = sum(intlist)
if summary >= 10:
summary = list(summary)
summary = sum(summary)
return summary
print(plus("123"))
Ответы (3 шт):
Автор решения: Dmitry
→ Ссылка
Сумму можно найти методом sum, который есть в списках, но для этого нужно чтобы список состоял из целых чисел
def plus(a):
a = list(a)
a_int = [int(i) for i in a]
summary = sum(a_int)
if summary >= 10:
summary = sum([int(i) for i in list(str(summary))])
return summary
Или в одну строку для нахождения суммы
summary = sum([int(i) for i in a])
Вывод:
>>> plus("123")
6
>>> plus("1234")
1
>>> plus("12345")
6
Да, и если задание ограничивает только 2мя символами, тогда надо написать так условие
if 10 <= summary < 100:
Автор решения: Harvar
→ Ссылка
def plus(a):
a = list(a) # "1", "2", "3" ...
intlist = [] # число до проверки на >=10
intlist2 = [] # число, если оно >=10
for i in a:
intnums = int(i) # "1", "2", "3"... в 1, 2, 3...
intlist.append(intnums) # [1,2,3...]
continue
summary = sum(intlist) # складывает значения intlist
if summary >= 10:
intlist_to_strlist = list(str(summary)) # если число больше 10, то конвертирует в список, чтобы потом разбить на знаки.
for i in intlist_to_strlist: # Конвертирует знаки в числа.
intnums2 = int(i)
intlist2.append(intnums2)
continue
summary = sum(intlist2) # складывает эти числа
return summary
print(plus("12345"))
Автор решения: CrazyElf
→ Ссылка
Всё это можно сделать гораздо короче:
def plus(x):
while len(x) > 1:
x = str(sum(map(int, x)))
return x
print(plus("123"))
# 6