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

Тема: Как сделать сумму цифр числа в питоне: лучшие способы

  1. Как сделать сумму цифр числа в питоне: лучшие способы

    Привет, хакеры! Нужно сделать код посчета суммы цифр числа в Питоне. Например, для числа 12345 мне нужно получить результат 15 (1+2+3+4+5). Итерационные способы и рекурсия пойдут, только чтобы было понятно. Я в этой теме нуб, но очень хочется разобраться, поэтому примеры кода очень приветствуются! Какие есть способы для этого в Python, а еще круто было бы узнать, как сделать это одним выражением? Ну и если у кого-то есть пример с использованием лямбд, буду вообще в шоколаде!



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

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

  3. Гля, вот один из способов, чтобы сделать это делом. Используем обычный цикл и строковое представление числа:

    Программный код:
    number 12345
    sum_of_digits 
    sum(int(digit) for digit in str(number))
    print(
    sum_of_digits
    Еще есть вариант через рекурсию, но это уже хардкор:

    Программный код:
    def sum_of_digits_rec(num):
        if 
    num == 0:
            return 
    0
        
    else:
            return 
    num 10 sum_of_digits_rec(num // 10)
            
    number 12345
    print(sum_of_digits_rec(number)) 
    Ну и напоследок, для истинных фанатиков лямбд:

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

    number 
    12345
    sum_of_digits 
    reduce(lambda xyymap(intstr(number)))
    print(
    sum_of_digits
    Надеюсь, хоть что-то из этого окажется полезным для тебя!

  4. Цитата Сообщение от AzureEagle
    Гля, вот один из способов, чтобы сделать это делом. Используем обычный цикл и строковое представление числа:

    Программный код:
    number 12345
    sum_of_digits 
    sum(int(digit) for digit in str(number))
    print(
    sum_of_digits
    Еще есть вариант через рекурсию, но это уже хардкор:

    Программный код:
    def sum_of_digits_rec(num):
        if 
    num == 0:
            return 
    0
        
    else:
            return 
    num 10 sum_of_digits_rec(num // 10)
            
    number 12345
    print(sum_of_digits_rec(number)) 
    Ну и напоследок, для истинных фанатиков лямбд:

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

    number 
    12345
    sum_of_digits 
    reduce(lambda xyymap(intstr(number)))
    print(
    sum_of_digits
    Надеюсь, хоть что-то из этого окажется полезным для тебя!
    Ого, сколько вариантов! Та рекурсия вообще мощь, хотя, наверное, малясь перегнул. С лямбдами тоже круто, но кода куча. Мой братан бы сказал: 'Теперь это личный топ-3 способов обсчитать число'.

  5. Если нужно всё в паре строк, вот это должно помочь:

    Программный код:
    num 12345
    result 
    sum(map(intstr(num)))
    print(
    result
    Типа, всё гениальное просто!

  6. Цитата Сообщение от AgentShadow
    Если нужно всё в паре строк, вот это должно помочь:

    Программный код:
    num 12345
    result 
    sum(map(intstr(num)))
    print(
    result
    Типа, всё гениальное просто!
    Кстати говоря, коротко и по делу! Ещё и супер просто, респект.

  7. Могу предложить ещё такой варик через list comprehension:

    Программный код:
    number 12345
    digits 
    = [int(digit) for digit in str(number)]
    print(
    sum(digits)) 
    Вроде всё ясно! Листы наше всё.

  8. Цитата Сообщение от Кира
    Могу предложить ещё такой варик через list comprehension:

    Программный код:
    number 12345
    digits 
    = [int(digit) for digit in str(number)]
    print(
    sum(digits)) 
    Вроде всё ясно! Листы наше всё.
    Оу, листы таки наш век. Интересное решение, но добавило немного длины. Хотя бы без лишних заморочек с функциями.

  9. Здравствуй, одержимый цифрами! Если ты в полном тиктоке от рекурсий, пойми: 'Меньше — лучше только для краткости!'

    Программный код:
    def sumOfDigits(n):
      
    0
      
    while n:
        
    s10// 10
      
    return s

    number 
    12345
    print(sumOfDigits(number)) 
    Банально и просто, но зато стабильно работает и понятно!

  10. Цитата Сообщение от Warpath
    Здравствуй, одержимый цифрами! Если ты в полном тиктоке от рекурсий, пойми: 'Меньше — лучше только для краткости!'

    Программный код:
    def sumOfDigits(n):
      
    0
      
    while n:
        
    s10// 10
      
    return s

    number 
    12345
    print(sumOfDigits(number)) 
    Банально и просто, но зато стабильно работает и понятно!
    Ага, традиционный старый добрый путь через while. Типа, есть стабильность во всем этом. Пойду тоже попробую.

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