Drone X

Функции: библиотека полётных расчётов

3 блок(ов) теории · 10 заданий · 140 баллов

Функция — это именованный расчёт, который можно выполнять столько раз, сколько нужно: она принимает параметры, вычисляет результат и возвращает его вызывающему коду через return. Объявление начинается со слова def: строка def per_motor(total_a, motors): создаёт операцию с именем per_motor и двумя параметрами — в скобках перечислены имена, под которые при вызове подставятся значения. Вызов per_motor(40, 4) передаёт аргументы 40 и 4, тело — строки с отступом в 4 пробела, как у ветки или цикла, — выполняется, а return доставляет результат в точку вызова: share = per_motor(40, 4) запомнит его в переменную. У параметра бывает значение по умолчанию: def per_motor(total_a, motors=4) разрешает короткий вызов per_motor(40) — недостающий параметр возьмёт 4, как у классического квадро; окто передаст свои 8 вторым аргументом. Показ на экране и результат — разные вещи: print лишь печатает текст человеку, а сам возвращает None; функция, в теле которой нет return, тоже возвращает None. Поэтому запись x = log_voltage(22.2) с print вместо return запомнит в x именно None, сколько бы строк ни появилось на экране, — а None при этом настоящее значение: его можно запомнить и даже напечатать.

Анатомия функции — четыре части: заголовок def с сигнатурой (имя и список параметров), сразу за ним docstring — строка в тройных кавычках, описывающая функцию словами, дальше тело с вычислениями, а return замыкает функцию. Переменные, созданные в теле, — локальные: они рождаются при вызове и исчезают вместе с ним, поэтому присваивание battery = 50 внутри функции создаст свою battery и не тронет глобальную, оставшуюся снаружи со значением 100; чтение же свободно — если имени в теле нет, Python ищет его снаружи. Одна функция может вызывать другую: def hours(m): return m / 60, затем def mission_hours(flight_min, setup_min): return hours(flight_min + setup_min) — результат внутренней функции идёт прямо в выражение внешней, и так из мелких расчётов собирается библиотека полётных формул. Возвращать можно и готовое сравнение: return endurance_min >= needed_min отдаёт вызывающему настоящее bool — приём из модуля 2. И функция умеет прятать цикл: снаружи виден один вызов, а внутри тела — целый цикл из модуля 3 с аккумулятором и continue.

Числа модуля — с настоящего парка: whoop «Мини» весит 32 г и летает на АКБ 1S 450 mAh, планер «Модуля» без АКБ — 1150 г, полезная нагрузка — до 1200 г у квадро и до 2800 г у окто; резерв батареи примем равным 20%. Для расчётов по парку пригодится чтение словаря из модуля 5: d.get(ключ, 0) возвращает значение по ключу, а когда ключа в словаре нет — запасное значение 0 вместо ошибки KeyError. Определять функции можно и интерактивно в REPL-терминале тренажёра — одна строка def kg(g): return g / 1000, и функция готова к вызовам.

Задания

0/10 заданий · 0/140 баллов

1. return и print: что получит вызывающий?

10 балл(ов)

В журнале две функции: log_battery(v) печатает f"battery: {v}%" и не содержит return, battery_value(v) возвращает v через return. Программа: x = log_battery(80); y = battery_value(80); print(x, y). Выберите вариант, где верно названо, что появится на экране и что осталось в переменных x и y.

1 / 10