с задачей, язык Python Напишите две функции: первая принимает одно целое положительное число N и находит сумму всех цифр числа N; вторая принимает число N и считает количество цифр в числе. В ответе выводится разность суммы чисел и количества.
Пример работы программы:
Введите число: 500
Сумма цифр: 5
Кол-во цифр в числе: 3
Разность суммы и кол-ва цифр: 2
number = int(input('Введите число: '))
def suma_number(number):
``suma = 0
``while number > 0:
digit = number % 10
suma = suma + digit
number = number // 10
``print('\nСумма цифр:', suma)
suma_number(number)
def count_number(number):
``countnumber = number
``digitcount = 0
``while countnumber > 0:
digitcount += 1
countnumber = countnumber // 10
``print('Кол-во цифр в числе:', digitcount)
count_number(number)
def differ(suma, digitcount):
``diff = suma - digitcount
``print('Разность суммы и кол-ва цифр:', diff)
differ(suma, digitcount)
Вы немного не понимаете, что такое локальные переменные.
Давайте объясню.
Локальными называются переменные, объявленные внутри функции и доступные только ей самой. Программный код за пределами функции к ним доступа не имеет. В этом и ошибка, Вы вызываете функцию differ() и применяете переменные, которые находятся в count_number() и suma_number(). Локальные переменные скрыты от других функций.
Чтобы избежать ошибки, как вариант, можно создать глобальную переменную:
1. Пишем перед функцией глоб. переменную
suma = 0
def suma_number(number):
pass
2. Присваиваем значение глобальной переменной внутри функции с ключевое слово global:
suma = 0
def suma_number(number):
global suma
pass
Полная программа:
number = int(input('Введите число: '))
suma = 0
def suma_number(number):
global suma
while number > 0:
digit = number % 10
suma = suma + digit
number = number // 10
print('\nСумма цифр:', suma)
suma_number(number)
digitcount = 0
def count_number(number):
global digitcount
countnumber = number
while countnumber > 0:
digitcount += 1
countnumber = countnumber // 10
print('Кол-во цифр в числе:', digitcount)
count_number(number)
def differ(suma, digitcount):
diff = suma - digitcount
print('Разность суммы и кол-ва цифр:', diff)
differ(suma, digitcount)
Можно обойтись и без глоб. переменных:
Когда Вы вызываете функцию differ(), не используйте локальные переменные из других функций, просто вызовите эти функции:
differ(suma_number(number), count_number(number))
Кстати, если задуматься, код можно сделать проще:
def suma_number(a):
return sum(map(int, list(a)))
def count_number(a):
return len(a)
def differ(a, b):
return a - b
n = input('Введите число: ')
print('Сумма цифр:', suma_number(n))
print('Кол-во цифр в числе:', count_number(n))
print('Разность суммы и кол-ва цифр:', differ(suma_number(n), count_number(n)))
Хотя можно и совсем "извращение" сделать без функций в 2 строчки..
n = input('Введите число: ')
print('Сумма цифр:', sum(map(int, list(n))), '\nКол-во цифр в числе:', len(n), '\nРазность суммы и кол-ва цифр:', sum(map(int, list(n))) - len(n))
Это так, пища для размышления.