Модуль 7.12 (Вложенные функции в Python). В python
существует возможность определять функции внутри других функций или, другими словами, создавать вложенные функции.
Что выведет следующий код?def outer() -> None: def say_hello() -> None: print('hello') def say_bye() -> None: print('bye') say_hello() say_bye()
Error
Что выведет следующий код?def multiply_by_10(): def f(): x = 3 print(x * 10) multiply_by_10()
Error
Что выведет следующий код?def color() -> None: g = 'green' def grey() -> None: nonlocal g g = 'grey' print(g) grey() print(g) color()
grey, grey
Исправьте код с предыдущего задания так, чтобы на экран вывело
bye
иhello
Код с предыдущего задания:
def outer() -> None: def say_hello() -> None: print('hello') def say_bye() -> None: print('bye') say_bye() # вызываем функцию которая печатает bye say_hello() # вызываем функцию которая печатает hello outer() # вызываем функцию которая вызывает 2 другие
Пользуясь вложенными функциями, реализуйте простой калькулятор.
Необходимо реализовать функциюcalculate
, которая принимает три параметра:
- обязательный числовой параметр
x
- обязательный числовой параметр
y
- необязательный строковый параметр
operation
, по умолчанию принимает значение английской буквыa
В данной функции должны быть реализованы следующие функции:
addition
— печатаем сложение двух чисел,subtraction
— печатаем вычитание из первого переданного параметра второго;division
— печатаем деление первого на второго,multiplication
— печатаем умножение двух чисел.Каждая из этих четырёх вложенных функций должна распечатать результат математической операции и ничего не возвращать
А при помощи параметра
operation
и условного оператора нужно выбрать какая из функций должна быть вызвана:
- если
operation
=a
, вызываем функциюaddition
;- если
operation
=s
, вызываем функцииsubtraction
;- если
operation
=d
, вызываем функцииdivision
;- если
operation
=m
, вызываем функцииmultiplication
;calculate(2, 5) # Печатает 7.0 calculate(2.2, 15, 'a') # Печатает 17.2 calculate(22, 15, 's') # Печатает 7.0 calculate(2, 3.2, 'm') # Печатает 6.4 calculate(10, 0.4, 'd') # Печатает 25.0Если
operation
принимает значение, отличное от перечисленных выше букв, то необходимо вывести на экран сообщениеОшибка. Данной операции не существует
.
Также если мы выполняем деление, то второе число (y
) не должен равняться нулю, в противном случае необходимо вывести на экран:На ноль делить нельзя!
def calculate(x:float, y:float, operation:str='a') -> None: def addition(): # функция сложения print(x + y) def subtraction(): # функция вычитания print(x - y) def division(): # если ввели число 0, выводим сообщение об ошибке print('На ноль делить нельзя!' if y == 0 else x / y) def multiplication(): # функция умножения print(x * y) if operation == 'a': # если в качестве операции вводим сложение, вызываем функцию сложения addition() elif operation == 's': # если в качестве операции вводим вычитание, вызываем функцию вычитания subtraction() elif operation == 'd': # если вводим число 0, вызываем функцию с сообщением об ошибке division() elif operation == 'm': # если в качестве операции вводим умножение, вызываем функцию умножения multiplication() else: # если ввели несуществующую операцию, выводим сообщение об ошибке print('Ошибка. Данной операции не существует')
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы