alarm
Задайте вопрос
Информатика
Bennett

посчитайте с задачей, язык PythonНапишите две функции: первая принимает одно целое положительное число N и находит сумму всех цифр числа N; вторая принимает число N и считает количество цифр в числе. В ответе выводится разность суммы чисел и количества. Пример работы программы:Введите число: 500Сумма цифр: 5Кол-во цифр в числе: 3Разность суммы и кол-ва цифр: 2number = 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)

ответы: 1
Зарегистрируйтесь, чтобы добавить ответ
Ответ:

Вы немного не понимаете, что такое локальные переменные.

Давайте объясню.

Локальными называются переменные, объявленные внутри функции и доступные только ей самой. Программный код за пределами функции к ним доступа не имеет. В этом и ошибка, Вы вызываете функцию 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))

Это так, пища для размышления.

222
Deborah Howard
Чтобы ответить необходимо зарегистрироваться.

Другие вопросы: - Информатика

на С++ Сумма подряд идущих Дан

Все привет поможете с программир

посчитайте 100 поинтов ПРОШУ О

Запишите число 950 в двоичной си

Григорий составляет пятибуквенны

Найдите количество 5-значных чис

Контакты
Реклама на сайте