Дана строка, элементами которой является любые символы, как посчитать сумму цифр в строке
поправте код
str1=str(input())
print(str1)
k=0
for elem in str1:
if elem>="0" and elem<="9":
k=k+1
print(elem)
print("k=" ,k)
Danis
19.2k5 золотых знаков20 серебряных знаков55 бронзовых знаков
Вам нужно проверить можно ли из символа сделать число, это делается так:
elem.isdigit()
вам надо найти сумму а не количество:
k = k + 1
поменяйте на:
k += int(elem)
код должен быть таким:
str1=str(input())
print(str1)
k=0
for elem in str1:
if elem.isdigit():
k += int(elem)
print(elem)
print("k=" ,k)
ответ дан 6 ноя 2020 в 10:04
DanisDanis
19.2k5 золотых знаков20 серебряных знаков55 бронзовых знаков
import re
a = input('')
digits = re.findall("d", a)
if not digits:
print('Цифры не найдены')
else:
print(eval('+'.join(digits)))
ответ дан 6 ноя 2020 в 13:39
if i just read my sum_digits
function here, it makes sense in my head but it seems to be producing wrong results. Any tip?
def is_a_digit(s):
''' (str) -> bool
Precondition: len(s) == 1
Return True iff s is a string containing a single digit character (between
'0' and '9' inclusive).
>>> is_a_digit('7')
True
>>> is_a_digit('b')
False
'''
return '0' <= s and s <= '9'
def sum_digits(digit):
b = 0
for a in digit:
if is_a_digit(a) == True:
b = int(a)
b += 1
return b
For the function sum_digits
, if i input sum_digits('hihello153john')
, it should produce 9
Óscar López
231k37 gold badges310 silver badges385 bronze badges
asked Jan 27, 2013 at 17:27
2
Notice that you can easily solve this problem using built-in functions. This is a more idiomatic and efficient solution:
def sum_digits(digit):
return sum(int(x) for x in digit if x.isdigit())
print(sum_digits('hihello153john'))
=> 9
In particular, be aware that the is_a_digit()
method already exists for string types, it’s called isdigit()
.
And the whole loop in the sum_digits()
function can be expressed more concisely using a generator expression as a parameter for the sum()
built-in function, as shown above.
Haseeb Mir
9181 gold badge13 silver badges22 bronze badges
answered Jan 27, 2013 at 17:32
Óscar LópezÓscar López
231k37 gold badges310 silver badges385 bronze badges
6
You’re resetting the value of b
on each iteration, if a
is a digit.
Perhaps you want:
b += int(a)
Instead of:
b = int(a)
b += 1
answered Jan 27, 2013 at 17:32
Alex ReynoldsAlex Reynolds
96k54 gold badges239 silver badges345 bronze badges
2
Another way of using built in functions, is using the reduce function:
>>> numeric = lambda x: int(x) if x.isdigit() else 0
>>> reduce(lambda x, y: x + numeric(y), 'hihello153john', 0)
9
grooveplex
2,4824 gold badges28 silver badges30 bronze badges
answered Jan 27, 2013 at 18:45
JCashJCash
3121 gold badge3 silver badges10 bronze badges
One liner
sum_digits = lambda x: sum(int(y) for y in x if y.isdigit())
Cam
14.9k16 gold badges77 silver badges128 bronze badges
answered Jan 27, 2013 at 18:25
shantanooshantanoo
3,6171 gold badge24 silver badges37 bronze badges
I would like to propose a different solution using regx that covers two scenarios:
1.
Input = ‘abcd45def05’
Output = 45 + 05 = 50
import re
print(sum(int(x) for x in re.findall(r'[0-9]+', my_str)))
Notice the ‘+’ for one or more occurrences
2.
Input = ‘abcd45def05’
Output = 4 + 5 + 0 + 5 = 14
import re
print(sum(int(x) for x in re.findall(r'[0-9]', my_str)))
answered Oct 3, 2017 at 7:23
Santosh PillaiSantosh Pillai
8,0891 gold badge31 silver badges27 bronze badges
Another way of doing it:
def digit_sum(n):
new_n = str(n)
sum = 0
for i in new_n:
sum += int(i)
return sum
answered Sep 29, 2018 at 17:59
An equivalent for your code, using list comprehensions:
def sum_digits(your_string):
return sum(int(x) for x in your_string if '0' <= x <= '9')
It will run faster then a «for» version, and saves a lot of code.
answered Jan 27, 2013 at 17:36
kasperskykaspersky
3,9374 gold badges33 silver badges50 bronze badges
Just a variation to @oscar’s answer, if we need the sum to be single digit,
def sum_digits(digit):
s = sum(int(x) for x in str(digit) if x.isdigit())
if len(str(s)) > 1:
return sum_digits(s)
else:
return s
answered Aug 17, 2017 at 9:35
BabuBabu
2,5463 gold badges30 silver badges47 bronze badges
#if string =he15ll15oo10
#sum of number =15+15+10=40
def sum_of_all_Number(s):
num = 0
sum = 0
for i in s:
if i.isdigit():
num = num * 10 + int(i)
else:
sum = sum + num
num = 0
return sum+num
#if string =he15ll15oo10
#sum of digit=1+5+1+5+1+0=13
def sum_of_Digit(s):
sum = 0
for i in s:
if i.isdigit():
sum= sum + int(i)
return sum
s = input("Enter any String ")
print("Sum of Number =", sum_of_all_Number(s))
print("Sum Of Digit =", sum_of_Digit(s))
Tomerikoo
18.1k16 gold badges45 silver badges60 bronze badges
answered Dec 9, 2021 at 15:03
simply turn the input to integer by int(a) —> using a.isdigit to make sure the input not None (») ,
if the input none make it 0 and return sum of the inputs in a string simply
def sum_str(a, b):
a = int(a) if a.isdigit() else 0
b = int(b) if b.isdigit() else 0
return f'{a+b}'
answered Feb 13 at 11:42
1
В программе на языке программирования Python сумму цифр содержащихся в строке с помощью функции sum, поэтому сначала потребуется преобразовать строку в последовательность чисел.
Каждый символ строки преобразуется в число (функцией map с параметром функции преобразования в виде анонимной функции преобразующей цифры в числа, а остальные символы в число 0)
для определения является ли символ цифрой удобно использовать метод строки isdigit
В этом случае анонимная функция имеет вид:
lambda x:int(x) if x.isdigit() else 0
вычислить сумму цифр строки s можно используя выражение:
sum(map(lambda x:int(x) if x.isdigit() else 0,s))
Пример выполнения в оболочке Python:
Уведомления
- Начало
- » Python для новичков
- » Как сложить цифры в строке?
#1 Март 22, 2020 15:41:06
Как сложить цифры в строке?
Добрый день.
Прошу помочь решить ребус.
Дана строка из одних чисел, необходимо вывести сумму всех чисел.
Думаю, что надо строку перевести в список и воспользоваться методом sym() для списка.
Наметал вот такую функцию и остановился. Застрял на том, что в списке все равно строковые данные, их надо перевести в числовые значения чтобы sum() выполнил суммирование.
str = '1234567' def sum_numb(numStr): list = [] list.extend(numStr) return sum(list) print(sum_numb(str))
Как правильно решить данную задачу?
Офлайн
- Пожаловаться
#2 Март 22, 2020 16:41:32
Как сложить цифры в строке?
master-python
в списке все равно строковые данные, их надо перевести в числовые значения
И в чем проблема? int в помощь.
Офлайн
- Пожаловаться
#3 Март 22, 2020 17:30:08
Как сложить цифры в строке?
Спасибо. Крайне содержательно!
Не надо делать ответы ради ответа!
Офлайн
- Пожаловаться
#4 Март 22, 2020 17:49:06
Как сложить цифры в строке?
master-pythonвам дали направление. если ничего не читать а действовать наобум то вы ничего не добьетесь
>>> str = '1234567' >>> print(list(map(int,str))) [1, 2, 3, 4, 5, 6, 7] >>> print([int(i) for i in str]) [1, 2, 3, 4, 5, 6, 7] >>>
вы даже не обратили внимание что переменная с названием str подсвечивается как ключевое слово что ни есть хорошо так писать.
Офлайн
- Пожаловаться
#5 Март 22, 2020 18:08:02
Как сложить цифры в строке?
marvellik
master-pythonвам дали направление. если ничего не читать а действовать наобум то вы ничего не добьетесь
Дружочек, не надо очередной раз на себя брать роль кибер-сенсеея или кибер-воспитателя, я сам разберусь что и где читать, хорошо? Что за мода прикидываться мудрым Ка пошла в интернете!?!?!? Я задал здесь вопрос! Есть что ответить — ответь, нет, проходи мимо!
marvellik
str подсвечивается как ключевое слово что ни есть хорошо так писать
У меня ничего не подсвечивается, если у вас подсвечивается, задавайте вопросы своему компьютеру.
есть переменная str, в ней строка из чисел. Фсе!
P.S. Как я жалею что исчез FidoNet…
Офлайн
- Пожаловаться
#6 Март 22, 2020 18:11:08
Как сложить цифры в строке?
master-pythonну удачи вам с вашим настроем. это был последний вопрос на который вам ответили.
Офлайн
- Пожаловаться
#7 Март 22, 2020 18:25:09
Как сложить цифры в строке?
marvellik
master-pythonну удачи вам с вашим настроем. это был последний вопрос на который вам ответили.
Да вы знаете, с таким посылом — “иди и читай”, особо многого обрести на этом форуме просто не возможно.
И да, решение на свой вопрос я уже нашел:
str = '1234567' def sum_numb(numStr): int_lst = [int(x) for x in numStr] return sum(int_lst) print(sum_numb(str))
И что там у вас подсвечивалось? Найдите себя, ради бога….и удачи…
Офлайн
- Пожаловаться
#8 Март 22, 2020 19:44:12
Как сложить цифры в строке?
master-python
особо многого обрести на этом форуме просто не возможно
Вы совершенно правы. И хочу дополнить — у форума вообще другие цели. Это не образовательная площадка, не ваш личный тренер и не учебник. Люди по собственному желанию оказывают или не оказывают помощь коллегам — вот идея форума. Читать вслух учебник вам никто не будет. Вежливо с вами общаться на интересные вам темы никто не вам не обещал. Не нравится — есть куча решений, самое очевидное из которых поискать себе аудиторию по вкусу в другом месте. И вы не правы, этот форум помог очень многим встать на ноги.
master-python
P.S. Как я жалею что исчез FidoNet…
P.S.S В фидо тебя бы ссаными тряпками закидали, там подобное тебе нубло за людей то не считали. Жалеет он. И, кстати, он никуда не исчез.
Отредактировано FishHook (Март 22, 2020 21:18:35)
Офлайн
- Пожаловаться
#9 Март 22, 2020 23:42:33
Как сложить цифры в строке?
master-python
Дана строка из одних чисел, необходимо вывести сумму всех чисел.
>>> s = '1234567' >>> out = sum(map(int, s)) >>> out 28 >>>
Офлайн
- Пожаловаться
#10 Март 23, 2020 10:41:27
Как сложить цифры в строке?
FishHook По манере написания, я вижу, ты ещё пупсик, пытающийся на форумах самоутвердиться. Не отчаивайся, вырастит!
А по теме — КГ/АМ
Офлайн
- Пожаловаться
- Начало
- » Python для новичков
- » Как сложить цифры в строке?
Добрый вечер,
В строке могут встречаться цифры и иные символы. Числом будем считать последовательность цифр, которая не может быть расширена до большего числа. Например, в строке «10+14=24» встречаются числа 10, 14, 24. Напишите программу, которая подсчитывает сумму всех чисел в данной строке.
ВХОДНЫЕ ДАННЫЕ
Программа получает на вход строку текста, длиной до 100000 символов. Строка может содержать произвольные ASCII-символы, в том числе пробелы.
ВЫХОДНЫЕ ДАННЫЕ
Программа должна вывести единственное число — сумму всех чисел в данной строке.
Например:
ВВОД
10+14=24
ВЫВОД
48
Данный код суммирует только числа разделенные пробелами.
Python | ||
|