profile
Размещено 3 года назад по предмету Информатика от gvozdb27

Помогите с задачей, язык 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)

  1. Ответ на вопрос
    Ответ на вопрос дан vanisherxxx

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

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

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

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

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.