Вопрос Решите задание на python

Регистрация
22 Ноя 2013
Сообщения
67
Репутация
0
Спасибо
0
Монет
0
Создайте функцию, принимающую в качестве аргументов два числа x и y=1 и

возвращающую частное d этих чисел в виде строки 'x/y = d'. Снабдите функцию

аннотациями: float для x, 'y != 0' для y и 'x/y' для возвращаемого функцией

результата. Добавьте в функцию строку документирования «Возвращает строку вида

'x/y = d'.». Выведите на экран результаты вызовов func(5, 0) и func(5, 10),

документацию функции через соответствующий атрибут, а также все аннотации,

использовав для этого цикл for.
251163561_73db0eb49f3927a4492ab540165a6599_800.jpg

(моих знаний хватило написать только вот это)
 
def divide_numbers(x: float, y: 'y != 0' = 1) -> str:
"""
Возвращает строку вида 'x/y = d'.
"""
d = x / y
return f"{x}/{y} = {d}"

print(divide_numbers(5, 0))
print(divide_numbers(5, 10))

for arg, annotation in divide_numbers.__annotations__.items():
print(f"{arg}: {annotation}")
print(f"docstring: {divide_numbers.__doc__}")

Объяснение:

Функция divide_numbers принимает два аргумента: x (тип float) и y (тип str, но с аннотацией 'y != 0', указывающей на ограничение, что y не должно быть равно 0). Функция возвращает строку (тип str), которая содержит результат деления x на y в формате 'x/y = d'.

Мы вызываем функцию дважды, передавая разные значения для x и y. Первый вызов вызывает ошибку, так как мы передаем 0 в качестве y. Второй вызов работает нормально и выводит на экран результат деления 5 на 10.

Затем мы используем цикл for для вывода аннотаций функции divide_numbers и ее документации. Мы обращаемся к атрибуту __annotations__ функции, который содержит словарь с именами аргументов и их соответствующими аннотациями. Мы также выводим строку документации функции, обращаясь к атрибуту __doc__ функции.
 
def func(x: float, y: int = 1) -> str:
"""Returns a string of the form 'x/y = d'."""
assert y != 0, 'Division by zero'
d = x / y
return f'{x}/{y} = {d}'

# Test and display
for x, y in [(5, 0), (5, 10)]:
result = func(x, y)
print(f'func({x}, {y}) = {result}')
print(f'func.__doc__ = {func.__doc__}')
print(f'func.__annotations__ = {func.__annotations__}')
 
Назад
Сверху