Перейти к содержимому

Как на языке python записывается полное и неполное ветвление

  • автор:

Операторы потока управления#

В этой главе мы познакомимся с условным ветвлением и циклами в python .

Об отступах#

Как и во многих других языках программирования исходный код python исполняется сверху вниз, но операторы потока управления (такие, как условное ветвление и циклы) позволяют проектировать менее линейные программы. Для того чтобы научиться применять такие операторы в python , необходимо держать в голове, что отступы ( indent ) в python имеют значение.

Во многих языках программирования отступы нередко используются для обозначения программных блоков, например, тела функции, цикла или условного оператора. Ниже приводится два варианта одной и той же функции для вычисления суммы положительных элементов массива на языке C/C++ , но во втором из них расставлены отступы, а в первом — нет.

Без отступов

С отступами

Отступы не влияют на ход исполнения программы в C/C++ и с точки зрения компилятора эти две функции абсолютно эквивалентны, но хороший программист расставляет их в любом случае. Это позволяет проще ориентироваться в программе и значительно повышает её читабельность. Например, к какому if относится else в следующем примере?

При первом взгляде, кажется, что блок else должен выполниться, если x <= 0 , т.е. else относится к внешнему оператору if . На самом деле это не так! Если расставлять отступы корректно, то такой путаницы будет гораздо меньше.

Если в C/C++ отступы оставляются на усмотрение программиста, то в python они являются обязательными. Создатель python Гвидо Ван Россум при проектировании языка решил вынудить программистов расставлять отступы правильно. Не следующий этим требованиям код, не запустится вообще или произведет не те действия, которые от него ожидал программист.

Составные операторы в python #

Операторы потока управления в python являются составными. Каждый такой оператор состоит из заголовка и тела (блок инструкций). Во многих других языках программирования для обозначения тела таких операторов используются скобки. Например, в C/C++ за это отвечают фигурные скобки. В python для этих целей используется отступ: инструкции в теле составного оператора вносятся с одинаковым дополнительным отступом вправо относительно заголовка этого оператора.

В конце заголовка составного оператора обязательно ставится символ двоеточия “ : ”.

Интерпретатор python понимает, что относится к телу составного оператора, на основе отступов.

Пока он встречает постоянный отступ вправо после заголовка составного оператора, он считает, что эти инструкции относятся к нему.

Как только отступ возвращается на прежний уровень, интерпретатор понимает, что он покинул тело составного оператора.

В python нет требований к тому, какого конкретно размера должен быть этот отступ. Важно лишь, чтобы он был постоянен в пределах каждого составного оператора. Чаще всего в качестве отступа используют 4 пробела.

Условное ветвление. if #

Начнем с оператора условного ветвления. Ниже представлен код C/C++ и python , который решает задачу fizz buzz.

Осваиваем Python. Унция 2. Ветвления, циклы + практика.

Простые конструкции в языке Python: ветвления и циклы имеют свои особенности по сравнению с другими языками. Поэтому я всё же решил потратить на это время и рассказать. Материал совсем простой!
Так же по просьбам читающих добавил в конец статьи разбор простой программки для наглядной демонстрации пройденного материала.

Условная инструкция if

Думаю тут всё понятно:

Существует так же краткая форма записи (аналог тернарного оператора в Си):

Заменяет собой конструкцию вида:

Перехват исключений

Конструкция else была добавлена к инструкции обработки исключений для того, чтобы мы могли разделить ситуации, не прибегая к использованию флагов, когда выполнение программы продолжилось из-за того, что исключений в блоке try не возникло, или же они были перехвачены и обработаны.
Конструкция else в языке Python так же добавлена и в циклы

Цикл while

break — осуществляет выход за пределы цикла
continue — осуществляет переход в начало цикла (к строке заголовка)

Цикл for

Рассмотрим типичную задачу поиска общих элементов двух списков. Её можно решить абсолютно разными путями, например, с помощью множеств, но в данном случае нас интересует решение с помощью вложенных циклов for.

Однако, эту задачу можно решить с помощью только одного цикла for, благодаря использованию оператора in:

В данном случае оператор in сам осуществляет обход списка и поиск элемента. Этот вариант решения будет работать быстрее, чем первый. Поэтому во всех случаях, когда это возможно — лучше стараться пользоваться уже описанными конструкциями языка.

Близкая тема к циклам в языке Python — это понятие итератора. И очень кстати, что эта тема была описана сегодняшним же числом на хабре. Некоторые описанные в ней моменты я использовал при написании практического примера, специально для это статьи. Например функцию enumerate() Вообще тенденция единовременного появления большого количества русскоязычного материала по Питону — очень позитивная!

Практика

Условие задачи: построить график изменения курса заданных валют за заданный период времени от текущей даты.

  • словарь, ключами которого являются названия валют, а значениями — идентификаторы валют определённые ЦБ.
  • количество интересующих нас месяцев
  • ширина картинки
  • высота картинки
Реализация:
Результат работы:

image

Описание:
  • список, содержащий значения курса валют по дням
  • минимальное значение в списке
  • максимальное значение в списке

Так же внутри функции используется конструкция try/except. В том случае, если получить документ с сервера ЦБ не удалось, или на вход функции были переданы неверные значения — функция parse() выбросит исключение и после этого логика программы перейдёт к обработчику исключений except, где наша функция возвратит объект None.
Цикл for j,key in enumerate(currency.keys()): в теле функции drawCurrency() осуществляет обход словаря валют. Для каждой из них вызывает функцию getData(), генерируется случайным образом цвет отображения курса валюты на графике, а так же определяется минимальное и максимальное значение курса среди всех переданных на вход валют.
После этого осуществляется последовательная отрисовка графиков каждой из валют.

Если требуется пояснение каких-то моментов — я отвечу в комментариях. В следующей статье cleg планировал углублённо раскрыть тему функций, однако, учитывая параллельное появление статей — не могу пока знать станет ли он это делать. Становится всё интереснее и интереснее ))

Теоретический материал по теме «Полное и неполное ветвление» для языков программирования Паскаль и Питон

Теоретический материал по теме "Полное и неполное ветвление" для языков программирования Паскаль и Питон

Полное и неполное ветвление Основы программирование

Полное и неполное ветвление Основы программирование

Полное и неполное ветвление

Основы программирование
На Паскале и Питоне

Разработчик: Черевичкина И.Н.

Конструкция «Полное ветвление»

Конструкция «Полное ветвление»

Конструкция «Полное ветвление»

IF A>B THEN
Begin D:=A+B end
ELSE
Begin D:=ABS(A+B) end;

Конструкция «Неполное ветвление»

Алгоритмическая конструкция «Ветвление»

Синтаксис оператора ветвления на

Синтаксис оператора ветвления на

Синтаксис оператора ветвления на

If (условие) THEN
begin действие 1; действие2; end
ELSE
begin действие 3; действие 4; end;

Если (условие), то Блок действий1 , иначе Блок действий_2

if (условие):
действие 1
действие2
else:
действие 3
действие 4

Оператор IF (УСЛОВИЕ).. THEN[…ELSE] —

Оператор IF (УСЛОВИЕ).. THEN[…ELSE] -

Оператор IF (УСЛОВИЕ).. THEN[…ELSE] — УСЛОВНЫЙ оператор.

Условия в программировании пишутся при помощи знаков сравнения:

> — больше
< — меньше
>= — больше, либо равно
<= — меньше, либо равно
<> — не равно
= — равно

С двух сторон от знака сравнения могут стоять ПЕРЕМЕННЫЕ или ВЫРАЖЕНИЯ (функции или числовые).

Результат сравнения всегда логический: TRUE (Истина) или FALSE (Ложь).

В зависимости от результата условия при ИСТИНЕ оператор выполняет команды веточки THEN, а при ЛЖИ – веточки ELSE, если она есть.

IF A >15 <0>THEN WRITE(‘ЧИСЛО’,A,’>15’)
ELSE WRITE(‘ЧИСЛО ‘,A,’не больше 15’) ;

При А=9 результат ложь

Оператор if (УСЛОВИЕ): .. […else] —

Оператор if (УСЛОВИЕ): .. […else] -

Оператор if (УСЛОВИЕ): .. […else] — УСЛОВНЫЙ оператор.

Условия в программировании пишутся при помощи знаков сравнения:
> — больше
< — меньше
>= — больше, либо равно
<= — меньше, либо равно
!= — не равно
== — равно

С двух сторон от знака сравнения могут стоять ПЕРЕМЕННЫЕ или ВЫРАЖЕНИЯ (функции или числовые).

Результат сравнения всегда логический: TRUE (Истина) или FALSE (Ложь).

В зависимости от результата условия при ИСТИНЕ оператор выполняет команды веточки «Да» (истина), а при ЛЖИ – веточки else, если она есть.

if A >15: <0>
print(‘ЧИСЛО’,A,’>15’)
else:
print(“ЧИСЛО “ ,A,’не больше 15’) ;

Программирование на языке Python

Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполняется.
Допустим мы хотим по данному числу x определить его абсолютную величину (модуль). Программа должна напечатать значение переменной x, если x>0 или же величину -x в противном случае. Линейная структура программы нарушается: в зависимости от справедливости условия x>0 должна быть выведена одна или другая величина. Соответствующий фрагмент программы на Питоне имеет вид:

В этой программе используется условная инструкция if (если). После слова if указывается проверяемое условие (x > 0), завершающееся двоеточием. После этого идет блок (последовательность) инструкций, который будет выполнен, если условие истинно, в нашем примере это вывод на экран величины x. Затем идет слово else (иначе), также завершающееся двоеточием, и блок инструкций, который будет выполнен, если проверяемое условие неверно, в данном случае будет выведено значение -x.
Итак, условная инструкция в Питоне имеет следующий синтаксис:

Блок инструкций 1 будет выполнен, если Условие истинно. Если Условие ложно, будет выполнен Блок инструкций 2.
В условной инструкции может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением. Например, если дано число x и мы хотим заменить его на абсолютную величину x, то это можно сделать следующим образом:

В этом примере переменной x будет присвоено значение -x, но только в том случае, когда x<0. А вот инструкция print(x) будет выполнена всегда, независимо от проверяемого условия.
Для выделения блока инструкций, относящихся к инструкции if или else в языке Питон используются отступы. Все инструкции, которые относятся к одному блоку, должны иметь равную величину отступа, то есть одинаковое число пробелов в начале строки. Рекомендуется использовать отступ в 4 пробела и не рекомедуется использовать в качестве отступа символ табуляции.

Вложенные условные инструкции

Внутри условных инструкций можно использовать любые инструкции языка Питон, в том числе и условную инструкцию. Получаем вложенное ветвление – после одной развилки в ходе исполнения программы появляется другая развилка. При этом вложенные блоки имеют больший размер отступа (например, 8 пробелов). Покажем это на примере программы, которая по данным ненулевым числам x и y определяет, в какой из четвертей координатной плоскости находится точка (x,y):

В этом примере мы использовали комментарии – текст, который интерпретатор игнорирует. Комментариями в Питоне является символ # и весь текст после этого символа до конца строки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *