Подсчет суммы цифр в строке - распространенная задача при обработке текстовых данных. Рассмотрим несколько эффективных способов решения этой проблемы на языке Python.

Содержание

Основные методы решения

МетодОписаниеСложность
Цикл с проверкой isdigit()Поочередная проверка каждого символаO(n)
Генератор спискаФильтрация цифр с последующим суммированиемO(n)
Регулярные выраженияПоиск всех цифр в строкеO(n)

Пошаговая реализация

1. Использование цикла и метода isdigit()

  • Создаем переменную-счетчик
  • Проходим по каждому символу строки
  • Проверяем, является ли символ цифрой
  • Суммируем цифры, преобразуя их в числа

Пример кода:

s = "a1b2c3"
total = 0
for char in s:
  if char.isdigit():
    total += int(char)
print(total) # Вывод: 6

Альтернативные способы

2. Использование генератора списка

s = "x5y10z2"
sum_digits = sum(int(c) for c in s if c.isdigit())
print(sum_digits) # Вывод: 8

3. Применение регулярных выражений

import re
s = "hello123world45"
digits = re.findall(r'\d', s)
sum_digits = sum(int(d) for d in digits)
print(sum_digits) # Вывод: 15

Обработка сложных случаев

  • Строки с многозначными числами
  • Смешанные символы разных языков
  • Отрицательные числа в строке
  • Числа с плавающей точкой

Пример для многозначных чисел:

import re
s = "abc100def200ghi"
numbers = re.findall(r'\d+', s)
sum_numbers = sum(int(num) for num in numbers)
print(sum_numbers) # Вывод: 300

Сравнение производительности

МетодВремя выполнения (на 1 млн символов)
Цикл с isdigit()~0.15 сек
Генератор списка~0.12 сек
Регулярные выражения~0.25 сек

Рекомендации по выбору метода

  1. Для простых случаев - генератор списка
  2. Для сложных шаблонов - регулярные выражения
  3. Для обучения - поэлементный цикл
  4. Для максимальной производительности - компилированные регулярные выражения

Частые ошибки

  • Не преобразование символа в число перед суммированием
  • Учет только однозначных чисел
  • Игнорирование региональных цифровых символов
  • Неправильная обработка строк без цифр

Запомните, а то забудете

Другие статьи

Лимиты на снятие наличных в ПСБ и прочее