Некоторые простые функции: оценка ИМТ и преобразование единиц измерения в метрические.
Посмотрите на код в редакторе. Нам нужно обратить внимание на две вещи.
Во-первых, тестовый вызов гарантирует, что защита работает должным образом. Результат:
None
output
Во-вторых, посмотрите, как используется символ обратная косая черта (\
). Если вы используете его в коде Python и завершите им строку, он скажет Python продолжить текущую строку кода в следующей строке.
Это может быть особенно полезно, когда Вам приходится иметь дело с длинными строками кода и Вы хотите улучшить его читаемость.
Хорошо, но есть кое-что, что мы слишком легко упустили - единицы измерения. Эта функция не слишком полезна для людей, привыкших к фунтам, футам и дюймам.
Что можно сделать для них?
Мы можем написать две простые функции для преобразования британских единиц измерения в метрические. Начнем с фунтов.
Хорошо известно, что 1 фунт = 0,45359237 кг
. Мы будем воспользуемся этим в нашей новой функции.
Это наша вспомогательная функция с именем lb_to_kg
:
def lb_to_kg(lb):
return lb * 0.45359237
print(lb_to_kg(1))
Результат тестового вызова выглядит неплохо:
0.45359237
output
А теперь пришло время для футов и дюймов: 1 фут = 0,3048 м
и 1 дюйм = 2,54 см = 0,0254 м
.
Написанная нами функция называется ft_and_inch_to_m
:
def ft_and_inch_to_m(ft, inch):
return ft * 0.3048 + inch * 0.0254
print(ft_and_inch_to_m(1, 1))
Результат быстрой проверки:
0.3302
вывод
Выглядит так, как ожидалось.
Примечание: мы хотели назвать второй параметр просто in
, а не inch
, но не смогли. Знаете почему?
in
- это ключевое слово в Python ‒ его нельзя использовать в качестве названия.
Преобразуем шесть футов в метры:
print(ft_and_inch_to_m(6, 0))
И вот результат:
1.8288000000000002
вывод
Вполне возможно, что иногда Вам может понадобиться использовать только футы без дюймов. Поможет ли Вам Python? Конечно поможет.
Мы немного изменили код:
def ft_and_inch_to_m(ft, inch = 0.0):
return ft * 0.3048 + inch * 0.0254
print(ft_and_inch_to_m(6))
Теперь параметр inch
имеет значение по умолчанию, равное 0,0
.
Код дает следующий вывод - это то, чего мы ожидали:
1.8288000000000002
вывод
Наконец, код может ответить на вопрос: каков ИМТ человека ростом 5 футов 7 дюймов и весом 176 фунтов?
Код, который мы написали:
def ft_and_inch_to_m(ft, inch = 0.0):
return ft * 0.3048 + inch * 0.0254
def lb_to_kg(lb):
return lb * 0.45359237
def bmi(weight, height):
if height < 1.0 or height > 2.5 or weight < 20 or weight > 200:
return None
return weight / height ** 2
print(bmi(weight = lb_to_kg(176), height = ft_and_inch_to_m(5, 7)))
И ответ равен:
27.565214082533313
вывод
Запустите код и протестируйте его.