Как посчитать сумму цифр в строке python
Перейти к содержимому

Как посчитать сумму цифр в строке python

  • автор:

Какой функцией на языке программирования Python найти сумму цифр строки?

В программе на языке программирования Python сумму цифр содержащихся в строке с помощью функции sum, поэтому сначала потребуется преобразовать строку в последовательность чисел.

Каждый символ строки преобразуется в число (функцией map с параметром функции преобразования в виде анонимной функции преобразующей цифры в числа, а остальные символы в число 0)

для определения является ли символ цифрой удобно использовать метод строки isdigit

В этом случае анонимная функция имеет вид:

lambda x:int(x) if x.isdigit() else 0

вычислить сумму цифр строки s можно используя выражение:

как посчитать сумму цифр в строке

Danis's user avatar

Вам нужно проверить можно ли из символа сделать число, это делается так:

вам надо найти сумму а не количество:

код должен быть таким:

Danis's user avatar

Edward Grachev's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.4.43609

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Сумма чисел в строке

Добрый вечер,
В строке могут встречаться цифры и иные символы. Числом будем считать последовательность цифр, которая не может быть расширена до большего числа. Например, в строке "10+14=24" встречаются числа 10, 14, 24. Напишите программу, которая подсчитывает сумму всех чисел в данной строке.

ВХОДНЫЕ ДАННЫЕ
Программа получает на вход строку текста, длиной до 100000 символов. Строка может содержать произвольные ASCII-символы, в том числе пробелы.

ВЫХОДНЫЕ ДАННЫЕ
Программа должна вывести единственное число — сумму всех чисел в данной строке.

ВЫВОД
48
Данный код суммирует только числа разделенные пробелами.

Найти сумму цифр числа в Python

Для изу­че­ния ба­зо­вых кон­струк­ций язы­ка Python пре­по­да­ва­те­ли обыч­но все­гда пред­ла­га­ют про­стые и по­нят­ные за­да­чи школь­но­го уров­ня. Но, не смот­ря на это, та­кие за­да­чи по­лез­ны и учат не толь­ко язы­ку, но и уме­нию ре­а­ли­зо­вы­вать ал­го­рит­мы. Рас­смот­рим тут од­ну из та­ких за­дач.

Рас­смот­рим несколь­ко ва­ри­ан­тов ре­ше­ния этой за­да­чи. Про­стей­ший и самій оче­вид­ный спо­соб ре­ше­ния за­да­чи со­сто­ит в том, чтобы по­лу­чить каж­дую из цифр, со­став­ля­ю­щих дан­ное чис­ло. Для это­го по­сле­до­ва­тель­но бу­дем де­лить ис­ход­ное чис­ло n на 10 на­це­ло (на­хо­дит раз­ря­ды чис­ла). Де­ле­ние бу­дем вы­пол­нять в цик­ле, в ко­то­ром сра­зу же и бу­дем на­кап­ли­вать тре­бу­е­мую сум­му цифр — suma, а так­же за­по­ми­нать ре­зуль­тат де­ле­ния для но­вой ите­ра­ции цик­ла в ту же пе­ре­мен­ную n. Де­ле­ние (цикл) про­дол­жа­ет­ся по­ка чис­ло n не до­стигнет нуле­во­го зна­че­ния.

Но, мож­но обой­тись и без де­ле­ния. Для это­го за­дан­ное чис­ло n пре­об­ра­зу­ем в стро­ку s, а за­тем пе­ре­бе­рем в цик­ле по­сле­до­ва­тель­но все сим­во­лы (циф­ры) этой стро­ки. Но, чтобы их мож­но бы­ло сло­жить, они долж­ны быть пре­об­ра­зо­ва­ны в чис­ло­вые зна­че­ния — int(c). И даль­ше оста­ет­ся толь­ко вос­поль­зо­вать­ся функ­ци­ей sum(), чтобы сло­жить эти все циф­ры и по­лу­чить сум­му цифр чис­ла — suma.

Но, нам это­го ма­ло и мы идем даль­ше. А мож­но ли при ре­ше­нии этой за­да­чи из­ба­вить­ся от цик­ла. По­про­бу­ем. Ре­ше­ние бу­дет по­хо­же на преды­ду­щее, но цикл за­ме­ним встро­ен­ной функ­ци­ей map() при­ме­ня­е­мой к каж­до­му эле­мен­ту неко­то­ро­го объ­ек­та. В на­шем слу­чае это сим­во­лы стро­ки str(n), по­лу­чен­ной пре­об­ра­зо­ва­ни­ем ис­ход­но­го чис­ла в стро­ку и ее со­став­ля­ю­щих сим­во­лов в це­лые чис­ла.

Ес­ли код это­го при­ме­ра не со­всем по­ня­тен, то про­ще бу­дет по­нять сле­ду­ю­щий код — там ис­поль­зу­ем пре­об­ра­зо­ва­ние чис­ла в спи­сок из цифр и даль­ше про­хо­дим­ся по нему функ­ци­ей map()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *