Как сделать повторение цикла до тех пор, пока сумма не будет равна одной цифре?

Подсказка: Напишите программу, которая добавляет все цифры в целое число. Если итоговая сумма составляет более одной цифры, повторяйте ее до тех пор, пока сумма не будет равна одной цифре. Например, номер 2345 имеет сумму, 2+3+4+5 = 14которая не является ни одной цифрой, поэтому повторите, с 1+4 = 5которой будет одна цифра.

Это код, который у меня есть до сих пор. Он работает для первой части, но я не могу понять, как заставить его повторять, пока сумма не будет равна одной цифре. Я уверен, что я должен вложить код, который у меня уже есть, с другим whileвыражением

n = int(input("Input an integer:"))
sum_int=0  
while float(n)/10 >= .1:   
    r= n%10
    sum_int += r
    n= n//10   
    if float(n)/10 > .1: print(r,  end= " + ") 
    else: print(r,"=",sum_int)

это пример вывода кода

Введите целое число: 98765678912398

8 + 9 + 3 + 2 + 1 + 9 + 8 + 7 + 6 + 5 + 6 + 7 + 8 + 9 = 88

8 + 8 = 16

1 + 6 = 7

python,

3

Ответов: 6


Это должно сработать, без участия деления.

n = int(input("Input an integer:"))
while n > 9:
    n = sum(map(int, str(n)))
print(n)

Он в основном преобразует целое число в строку, а затем суммирует цифры, используя понимание списка и продолжается до тех пор, пока число не будет больше 9.


3

вы можете попробовать это решение, если n = 98, то ваш выход будет 8

def repitative_sum(n):
    j=2
    while j!=1:
        n=str(n)
        j=len(n)
        n=list(map(int,n))
        n=sum(n)
    print(n)

Здесь вам не нужно преобразовывать целое число в float; просто используйте divmod()функцию в цикле:

def sum_digits(n):
    newnum = 0
    while n:
        n, digit = divmod(n, 10)
        newnum += digit
    return newnum

Сделав его функцией, вы можете более легко использовать его для повторного применения этого числа до тех пор, пока оно не станет меньше 10:

n = int(input("Input an integer:"))
while n > 9:
    n = sum_digits(n)

print(n)

Вы можете использовать рекурсию.

Попробуй это:

def sum_of_digits(n):
    s = 0

    while n:
        s += n % 10
        n //= 10

    if s > 9:
        return sum_of_digits(s)

    return s

n = int(input("Enter an integer: "))
print(sum_of_digits(n))

1

Я не уверен, что это анти-практика в Python, потому что я ничего не знаю о языке, но вот мое решение.

n = int(input("Input an integer:"))

def sum_int(num):
    numArr = map(int,str(num))
    number = sum(numArr)
    if number < 10:
        print(number)
    else:
        sum_int(number)

sum_int(n)

Опять же, я не уверен в рекурсии внутри функции в Python, но эй, это работает :)

питон,
Похожие вопросы
Яндекс.Метрика