Найти сумму цифр числа, кроме самой левой цифры(Самый старший разряд)

Рейтинг: -3Ответов: 2Опубликовано: 09.08.2023

Код:

number = -2345

sum_res = 0

number = abs(number) 

while number > 2:

   division_res = number % 10 
  
print('Остаток: ', division_res) 

sum_res+= division_res

number = int(number / 10) 

print('Число', number)

print('Суммы цифр числа = ', sum_res)

Ответы

▲ 2

Преобразуем число в строку и делаем срез [1:], "откусывая" первую слева цифру. Далее суммируем оставшиеся цифры, преобразовывая их в целые числа

number = -2345
sum_res = sum(int(d) for d in str(abs(number))[1:])
print(f'Число {number}\nСумма цифр числа без первой цифры = {sum_res}')
Число -2345
Сумма цифр числа без первой цифры = 12

И разбор основных ошибок в вашем коде:

number = -2345

sum_res = 0

number = abs(number) 

while number > 2: # бесконечный цикл для abs(number) > 2, т.к. number в теле цикла не изменяется. И условие > 2 не подходит, нужно > 9 (десятичное число с количеством цифр > 1)

   division_res = number % 10 # поскольку number в теле цикла не изменяется, то division_res будет всегда один и тот же
  
print('Остаток: ', division_res) 

sum_res+= division_res # здесь ничего не просуммируется для abs(number), поскольку программа зациклится (см. выше). Для number<=2 возникнет ошибка, поскольку  переменная division_res будет не определена `name 'division_res' is not defined` (цикл выше не исполнится ни разу). Это нужно внести в тело цикла.

number = int(number / 10) # это нужно внести в тело цикла

print('Число', number)

print('Суммы цифр числа = ', sum_res)

Ваш код с небольшими правками:

number = -2345
sum_res = 0
number1 = abs(number)                   # здесь и в теле цикла поменял number на number1 - иначе в конце напечатается НЕ исходное число
while number1 > 9:                      # поменял 2 на  9
    division_res = number1 % 10
    print('Остаток: ', division_res)    # сделал отступ для внесения интрукции в тело цикла
    sum_res += division_res             # сделал отступ для внесения интрукции в тело цикла
    number1 = int(number1 / 10)         # сделал отступ для внесения интрукции в тело цикла
print('Число', number)
print('Суммы цифр числа = ', sum_res)
Остаток:  5
Остаток:  4
Остаток:  3
Число -2345
Суммы цифр числа =  12
▲ 0

Правильный код для решения этой задачи следующий:

try:
    number = int(input("Введите число для суммирования: ")
except ValueError:
    print("Введено неправильное число.")
number = str(abs(number))
for i in number:
    sum += int(i)
sum -= int(number[0])
print("Сумма цифр числа кроме первой: " + sum)

В данном коде мы сначала вводим число и проверяем его на правильность, затем преобразуем его в строку и циклом суммируем все его цифры. Затем отнимаем от результата первую цифру исходного числа.