Module (49%)
Section (22%)

Некоторые простые функции: оценка ИМТ и преобразование единиц измерения в метрические.

Посмотрите на код в редакторе. Нам нужно обратить внимание на две вещи.

Во-первых, тестовый вызов гарантирует, что защита работает должным образом. Результат:

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

вывод


Запустите код и протестируйте его.


Code

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(352.5, 1.65))
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×