Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как посчитать сумму чисел в строке python: советы и примеры

  1. Как посчитать сумму чисел в строке python: советы и примеры

    Привет всем! У меня такой вопрос: я пытаюсь написать скрипт на питоне, который будет находить сумму всех чисел в строке. Например, есть строка 'abc123xyz45', и я хочу, чтобы скрипт вывел 168 (123 + 45). Пока что у меня ничего не получилось, пытался использовать регулярные выражения и функции map(), но что-то не так. Может, у кого-то есть готовое решение или идеи, как это оптимально сделать? Буду благодарен за подсказки и примеры!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Ага, знакомая задачка. Тут реально могут выручить регулярные выражения и функция map(). Вот тебе примерчик:

    Программный код:
    import re

    def sum_of_numbers
    (s):
        
    numbers re.findall(r'\d+'s)
        return 
    sum(map(intnumbers))

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    В двух словах: re.findall ищет все числа и возвращает их списком строк, потом мы с помощью map() конвертим их в int и складываем sum(). Готово! Надеюсь, что поможет.

  4. Цитата Сообщение от AzureHawk
    Ага, знакомая задачка. Тут реально могут выручить регулярные выражения и функция map(). Вот тебе примерчик:

    Программный код:
    import re

    def sum_of_numbers
    (s):
        
    numbers re.findall(r'\d+'s)
        return 
    sum(map(intnumbers))

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    В двух словах: re.findall ищет все числа и возвращает их списком строк, потом мы с помощью map() конвертим их в int и складываем sum(). Готово! Надеюсь, что поможет.
    О, вау! Правда просто! А чем re.findall отличается от обычного split() по пробелам? Да и map() раньше не юзала, мощная штука.

  5. А можно и без регулярок, используя только list comprehension:

    Программный код:
    def sum_of_numbers(s):
        return 
    sum(int(''.join(x)) for x in re.findall(r'\d+'s))

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    Лично мне так удобнее и нагляднее.

  6. Цитата Сообщение от Валерий Кравцов
    А можно и без регулярок, используя только list comprehension:

    Программный код:
    def sum_of_numbers(s):
        return 
    sum(int(''.join(x)) for x in re.findall(r'\d+'s))

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    Лично мне так удобнее и нагляднее.
    Круто! Даже без re.findall обошлось! Правда, компу часом не сложнее такой код? Иногда же проще лучше, чем изящно.

  7. Самый топовый способ использовать регулярки и comprehensions вместе. Например:

    Программный код:
    import re

    def sum_of_numbers
    (s):
        return 
    sum([int(num) for num in re.findall(r'\d+'s)])

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    Быстро и читабельно!

  8. Цитата Сообщение от StormMermaid
    Самый топовый способ использовать регулярки и comprehensions вместе. Например:

    Программный код:
    import re

    def sum_of_numbers
    (s):
        return 
    sum([int(num) for num in re.findall(r'\d+'s)])

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    Быстро и читабельно!
    Эффективненько! Давно хотел узнать про комбинацию list comprehension с регулярками. Надо бы запомнить!

  9. Мужики, а что насчёт чисто функционального подхода? Вот вариант с reduce и map:

    Программный код:
    from functools import reduce
    import re

    def sum_of_numbers
    (s):
        
    numbers map(intre.findall(r'\d+'s))
        return 
    reduce(lambda xyynumbers)

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    Используем reduce от functools, на что-то типа линейной алгебры похоже

  10. Цитата Сообщение от Маг
    Мужики, а что насчёт чисто функционального подхода? Вот вариант с reduce и map:

    Программный код:
    from functools import reduce
    import re

    def sum_of_numbers
    (s):
        
    numbers map(intre.findall(r'\d+'s))
        return 
    reduce(lambda xyynumbers)

    'abc123xyz45'
    print(sum_of_numbers(s))  # Вывод: 168 
    Используем reduce от functools, на что-то типа линейной алгебры похоже
    Йо, а чё, так тоже норм. Лямбды и reduce - для настоящих профи! Хотя тут может быть сложнее разобраться, но зато панта стильно!

Страница 1 из 2 12 ПоследняяПоследняя