
Помогите с задачей, язык 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))
Это так, пища для размышления.



У вас есть небольшие ошибки в коде. Вот исправленный вариант:
pythondef suma_number(number):
suma = 0
while number > 0:
digit = number % 10
suma = suma + digit
number = number // 10
return suma
def count_number(number):
countnumber = number
digitcount = 0
while countnumber > 0:
digitcount += 1
countnumber = countnumber // 10
return digitcount
number = int(input('Введите число: '))
sum_of_digits = suma_number(number)
number_of_digits = count_number(number)
print('Сумма цифр:', sum_of_digits)
print('Кол-во цифр в числе:', number_of_digits)
print('Разность суммы и кол-ва цифр:', sum_of_digits - number_of_digits)
Пример работы программы:
Введите число: 500 Сумма цифр: 5 Кол-во цифр в числе: 3 Разность суммы и кол-ва цифр: 2


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili