Подсчитать сумму цифр числа
s = '<' + '1' * 10 + '2' * 20 + '3' * 30
while ('>1' in s) or ('>2' in s) or ('>3' in s):
s = s.replace('>1', '22>', 1)
s = s.replace('>2', '2>', 1)
s = s.replace('>3', '1>', 1)
print(s)
на выводе получаем число длинное 111111111122222222222222222222333333333333333333333333333333 как мне найти его сумму с помощью кода
Ответы (7 шт):
Итак, мы получили число в виде строки. Пройдёмся циклом по каждому символу и добавим его к сумме, если это цифра.
s = '111111111122222222222222222222333333333333333333333333333333'
summa = 0
for i in s:
if i.isdigit():
summa += int(i)
print(summa)
Функция isdigit нужна для проверки на то, что символ - это цифра. Если в строке окажется < или ещё какие-то другие знаки, то ошибки не возникнет.
Можно сделать более короткий вариант, используя генератор списка:
print(sum([int(i) for i in s if i.isdigit()]))
number = sum(int(i) for i in str(s) if i.isdigit())
print(number)
Существует множество способов это сделать, я привел первое что пришло в голову, вот 1, запусти код чтобы понять, как менялось s
s='111111111122222222222222222222333333333333333333333333333333'
s=s.replace(""," ").split()
print(s)
print(type(s[0]))
s=list(map(int,s))
print(s)
print(type(s[0]))
print(sum(s))
Вот другой способ
s='111111111122222222222222222222333333333333333333333333333333'
summa = 0
for i in s:
summa+=int(i)
print(summa)
summa = sum(list(map(int, s)))
можно и в 1 строчку никто не спорит...
summa = sum(map(int, s))
но я не думаю что ему понятно, что тут происходит, мой 1 вариант, даст ему понять что постепенно происходит, видно что он новичок, а вы сразу на меня накинулись((
Вариант без явных циклов:
print(sum(map(int, filter(str.isdigit, s))))
n = 111111111122222222222222222222333333333333333333333333333333
res = 0
while n:
res += n % 10
n //= 10
print(res)
140
s = '<' + '1' * 10 + '2' * 20 + '3' * 30
while ('>1' in s) or ('>2' in s) or ('>3' in s):
s = s.replace('>1', '22>', 1)
s = s.replace('>2', '2>', 1)
s = s.replace('>3', '1>', 1)
lis = list(str(s))
a = 1
b = int(lis[a])
while a < len(str(s)) - 1:
b = b + int(lis[a + 1])
a += 1
print(b)
lis = list(str(s))
a = 1
b = int(lis[a])
while a < len(str(s)) - 1:
b = b + int(lis[a + 1])
a += 1
print(b)