Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 273

c_boil_temp = 100.0

c_freeze_temp = 0.0

f_range = f_boil_temp — f_freeze_temp

c_range = c_boil_temp — c_freeze_temp

f_c_ratio = c_range / f_range

c_temp = (f_temp — f_freeze_temp) * f_c_ratio + c_freeze_temp

return c_temp

if __name__ == '__main__':

for f_temp in [-40.0, 0.0, 32.0, 100.0, 212.0]:

c_temp = ftoc(f_temp)

print('%f F => %f C' % (f_temp, c_temp))

Запустим тесты:

$ python ftoc1.py

-40.000000 F => -40.000000 C

0.000000 F => -17.777778 C

32.000000 F => 0.000000 C

100.000000 F => 37.777778 C

212.000000 F => 100.000000 C

352

Глава 12. Быть питонщиком

Мы можем сделать как минимум два улучшения.

 В языке Python нет констант, но таблица стилей PEP-8 рекомендует (http://bit.ly/

pep-constant) использовать прописные буквы и подчеркивания (например,

ALL_CAPS) при именовании переменных, которые должны считаться константами.

Переименуем эти «константные» переменные в нашем примере.

 Поскольку мы заранее вычислили значения, основываясь на константах, пере-

несем их в верхнюю часть модуля. Таким образом, они будут рассчитываться

только один раз при каждом вызове функции ftoc().

Так выглядит переделанный код:

F_BOIL_TEMP = 212.0

F_FREEZE_TEMP = 32.0

C_BOIL_TEMP = 100.0

C_FREEZE_TEMP = 0.0

F_RANGE = F_BOIL_TEMP — F_FREEZE_TEMP

C_RANGE = C_BOIL_TEMP — C_FREEZE_TEMP

F_C_RATIO = C_RANGE / F_RANGE

def ftoc(f_temp):

"Convert Fahrenheit temperature <f_temp> to Celsius and return it."

c_temp = (f_temp — F_FREEZE_TEMP) * F_C_RATIO + C_FREEZE_TEMP

return c_temp

if __name__ == '__main__':

for f_temp in [-40.0, 0.0, 32.0, 100.0, 212.0]:

c_temp = ftoc(f_temp)

print('%f F => %f C' % (f_temp, c_temp))

Тестируем код

Время от времени я делаю небольшое изменение в своем коде и говорю себе: «Вы-

глядит неплохо, можно отправлять». А затем все ломается. Ой! Каждый раз, когда

я делаю это (к счастью, со временем все реже и реже), я чувствую себя глупцом

и клянусь, что в следующий раз напишу еще больше тестов.

Самый простой способ протестировать программы, написанные на Python, —