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

Тема: Как найти сумму разрядов числа в питоне

  1. Как найти сумму разрядов числа в питоне

    Привет, народ! Кто-нибудь знает, как найти сумму разрядов числа в питоне? Нужно по заданному числу, например, 123, получить сумму его разрядов (1 + 2 + 3 = 6). Вроде простая задача, но что-то я торможу. Буду рад любым примерам кода или объяснениям, как такое реализовать. Спасибки!



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

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

  3. Эй, привет! Вот простенький способ решить твою задачу:

    Программный код:
    def sum_digits(number):
        return 
    sum(int(digit) for digit in str(number))

    num 123
    print(sum_digits(num))  # Выведет 6 
    Буквально пару строк кода, и всё окей. Сначала превращаем число в строку, потом итерируемся по его символам и склеиваем всё это в сумму. Гуд лак!

  4. Цитата Сообщение от PhoenixRebirth
    Эй, привет! Вот простенький способ решить твою задачу:

    Программный код:
    def sum_digits(number):
        return 
    sum(int(digit) for digit in str(number))

    num 123
    print(sum_digits(num))  # Выведет 6 
    Буквально пару строк кода, и всё окей. Сначала превращаем число в строку, потом итерируемся по его символам и склеиваем всё это в сумму. Гуд лак!
    Во, как сразу все лаконично. А если число отрицательное, код будет работать? Надо бы протестить на '-123'.

  5. Привет! Ещё вариант с использованием map() и filter():

    Программный код:
    def sum_digits(number):
        return 
    sum(map(intfilter(str.isdigitstr(number))))

    num = -123
    print(sum_digits(num))  # Выведет 6 
    Добавил перевю с filter(), если число вдруг отрицательное.

  6. Цитата Сообщение от Бизон
    Привет! Ещё вариант с использованием map() и filter():

    Программный код:
    def sum_digits(number):
        return 
    sum(map(intfilter(str.isdigitstr(number))))

    num = -123
    print(sum_digits(num))  # Выведет 6 
    Добавил перевю с filter(), если число вдруг отрицательное.
    Супер подход. Интересно, будет ли большая разница в производительности по сравнению с первой версией?

  7. Здарова! Я обычно юзаю циклы максимально просто:

    Программный код:
    def sum_digits(number):
        
    total 0
        
    for digit in str(abs(number)):
            
    total += int(digit)
        return 
    total

    num 
    123
    print(sum_digits(num))  # Для позитивных чисел работает норм 
    Такой вот классик подход.

  8. Цитата Сообщение от Alena
    Здарова! Я обычно юзаю циклы максимально просто:

    Программный код:
    def sum_digits(number):
        
    total 0
        
    for digit in str(abs(number)):
            
    total += int(digit)
        return 
    total

    num 
    123
    print(sum_digits(num))  # Для позитивных чисел работает норм 
    Такой вот классик подход.
    Классик есть классик, больше шагов но зато нагляднее. Кстати, abs() тут не зря, для отрицательных спасает.

  9. Привет! Тоже вариант с рекурсией, если хочется поглубже ковырнуть тему:

    Программный код:
    def sum_digits(number):
        
    number abs(number)
        if 
    number == 0:
            return 
    0
        
    else:
            return 
    number 10 sum_digits(number // 10)

    num = -123
    print(sum_digits(num))  # Тоже работает гуд 
    Чуть по-другому, но тоже ок.

  10. Цитата Сообщение от Oleg
    Привет! Тоже вариант с рекурсией, если хочется поглубже ковырнуть тему:

    Программный код:
    def sum_digits(number):
        
    number abs(number)
        if 
    number == 0:
            return 
    0
        
    else:
            return 
    number 10 sum_digits(number // 10)

    num = -123
    print(sum_digits(num))  # Тоже работает гуд 
    Чуть по-другому, но тоже ок.
    Самоучка, рекурсия может и перегрузить стек при больших значениях. Делай тесты, прощупай свои кейсы.

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