Как найти сумму цифр в строке python

Дана строка, элементами которой является любые символы, как посчитать сумму цифр в строке

поправте код

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's user avatar

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

Danis's user avatar

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

Edward Grachev's user avatar

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's user avatar

Óscar López

231k37 gold badges310 silver badges385 bronze badges

asked Jan 27, 2013 at 17:27

user1864828's user avatar

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's user avatar

Haseeb Mir

9181 gold badge13 silver badges22 bronze badges

answered Jan 27, 2013 at 17:32

Óscar López's user avatar

Ó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 Reynolds's user avatar

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's user avatar

grooveplex

2,4824 gold badges28 silver badges30 bronze badges

answered Jan 27, 2013 at 18:45

JCash's user avatar

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's user avatar

Cam

14.9k16 gold badges77 silver badges128 bronze badges

answered Jan 27, 2013 at 18:25

shantanoo's user avatar

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 Pillai's user avatar

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

Leonardo Lima's user avatar

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

kaspersky's user avatar

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

Babu's user avatar

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's user avatar

Tomerikoo

18.1k16 gold badges45 silver badges60 bronze badges

answered Dec 9, 2021 at 15:03

Sanjay Rai's user avatar

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

Not Bedo's user avatar

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
1
2
3
4
5
6
7
8
9
10
line = str(input())
words = line.split(' ')
product = 0
for word in words:
    try:
        value = int(word)
        product += value
    except:
        pass
print(product)

Понравилась статья? Поделить с друзьями:
  • Как грамотно составить договор по оказанию услуг
  • Как найти маленький предмет на земле
  • Как найти все 13 предметов
  • Как найти высоту на которую поднято тело
  • Как найти деньги на улице детям