Программирование и научные вычисления на языке Python/§5: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 34:
 
В случае, если температура в градусах Цельсия оказывается ниже абсолютного нуля, что противоречит постулатам термодинамики, то выводится замечание об отсутствии физического смысла и абсурдности перевода значения температуры в градусы шкалы Фаренгейта. Если же ошибки не возникает, то происходит пересчет и вывод значения. Независимо от того, выполнилось ли условие или нет, выполняется инструкция в последней строке, поскольку она не относится к блоку if-else.
 
Как и у дерева или реки у кода программы таких ветвей или рукавов может быть множество и выбор может быть гораздо более сложным, с вложенными друг в друга ветвями. Для того, чтобы текст программы не растекался по горизонтали (ведь для каждой ветви требуется еще один отступ в четыре пробела), существует замечательная конструкция выбора ''elif'' (сокращение от ''else-if''). Смотрится это общем виде так:
 
 
<source lang="python">if condition1:
<block of statements>
elif condition2:
<block of statements>
elif condition3:
<block of statements>
else:
<block of statements>
<next statement></source>
 
 
Последняя ''else''-часть в случае ненадобности может быть опущена. Конкретное применение можно понять на таком примере:
 
 
<source lang="python">def N(x):
if x < 0:
return 0.0
elif 0 <= x < 1:
return x
elif 1 <= x < 2:
return 2 - x
elif x >= 2:
return 0.0</source>
 
 
В этом коде записана кусочно определенная математическая функция, которой в разных интервалах ''x'' соответствует разное описание. Если к ней внимательно приглядеться, то можно заметить, что ее можно еще значительно оптимизировать: в первой и последней инструкции ''return'' возвращается ноль. Другими словами, на языке математики можно сказать, что функция равна нулю везде, кроме интервала (0; 2). Более короткая и ясная запись функции:
 
 
<source lang="python">def N(x):
if 0 <= x < 1:
return x
elif 1 <= x < 2:
return 2 - x
else:
return 0</source>