Plazer-don.ru

Сварочное оборудование
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

4. 1. Теория¶

4.1. Теория¶

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

цикл — конструкция, предназначенная для организации многократного исполнения набора инструкций.

В языке Python ветвление и цикл поддерживаются операторами:

while : цикл с условием;

for : совместные циклы (циклы по коллекциям).

Цикл FOR

оператор цикла For на Питоне

В Python цикл for имеет такой синтаксис:

Пример:

for i in range(3): print(i) # 0 # 1 # 2

Пример с двумя параметрами:

for i in range(5, 8): print(i) # 5 # 6 # 7

for x in range(1,11): print ( 2**x ) # 2 4 8 16 . 1024

Шаг счетчика цикла можно менять:

for x in range(1,11,2): print ( 2**x )

for i in range(10, 7, -1): print(i) # 10 # 9 # 8

Еще пример работы:

for i in ‘hello world’: if i == ‘o’: continue print(i, end=») # hell wrld

Пример использования break:

for i in ‘hello world’: if i == ‘l’: break print(i, end=») # he

a=0 n=10 for i in range(1,n+1,2): a=a+1 if a==5: continue print (a) if a==7: break print ("всё!")

Пример вывода:

Случайное число

В Python случайное число задается с помощью двух функций:

  • random() – случайное вещественное из полуинтервала [0,1) ;
  • randint(a,b) – случайное целое из отрезка [a,b].

Но для использования функция необходимо предварительно подключить библиотеку:

# подключение библиотеки: from random import randint # получение целого случайного числа в диапазоне от 1 до 10 x = randint(1,11) # получение вещественного случайного числа в полуинтервале от 5 до 11 from random import random x = 6*random() + 5

Практика с enumerate()

Допустимо применять enumerate () в любой ситуации, например, когда нужно использовать count и элемент в цикле. Имейте в виду, что функция enumerate () увеличивает количество на единицу на каждой итерации. Далее рассмотрим некоторые варианты использования enumerate ().

Читайте так же:
Сброс счетчика knox 4pda

Количество итеративных элементов

В предыдущем разделе вы видели, как использовать enumerate() для печати. Разберем скрипт, читающий файлы reST и сообщающий пользователю о проблемах с форматированием.

Не беспокойтесь, если что-то не понятно, т. к. цель – показать реальное использование enumerate():

check_whitespace() принимает один аргумент, lines, который является строками обрабатываемого файла. Сценарий возвращает номер строки, сокращенный как lno и line, а далее идет проверка на нежелательные символы: r, t, табуляции и пробелы.

Когда встречается один из этих элементов, функция выдает текущий номер строки и сообщение для юзера. Переменная count lno хранит в себе номер строки, а не индекс, что позволит пользователю узнать местонахождение проблемы.

Условные операторы для пропуска элементов

Иногда есть необходимость выполнить действие на первой итерации цикла:

Мы хотим вывести дополнительную информацию о тестовом пользователе. Поскольку этот юзер первый, можно взять первое значение индекса цикла для выходных данных.

Можно комбинировать математические операции с условиями. Например, если вам понадобится возвращать элементы из итерационной модели, имеющие четный индекс. Это делается следующим образом:

even_items() принимает аргумент iterable. Значения инициализируются как пустой список. Затем создается цикл for с помощью enumerate() и устанавливается start=1 .

В цикле for проверяется, равен ли остаток от деления index на 2 нулю и если так, то элемент добавляется к значениям.

Вы можете сделать код более понятным, используя list comprehension без инициализации пустого списка:

В этом примере even_items() использует list comprehension, а не цикл for для извлечения каждого элемента из списка, индекс которого является четным числом.

Вы можете проверить, что even_items() работает как ожидалось, получив четные элементы из диапазона целых чисел от 1 до 10. Результатом будет [2, 4, 6, 8, 10]:

Читайте так же:
Счетчик для сайта opencart

even_items() возвращает четные элементы из seq. Теперь можно проверить, как эта штука будет работать с буквами алфавита ASCII:

Строка alphabet содержит двадцать шесть строчных букв ASCII-алфавита. Вызов even_items() и передача alphabet возвращает список чередующихся букв.

Строки в Python – это последовательности, которые можно использовать как в циклах, так и в целочисленном индексировании. В случае со строками нужны квадратные скобки для реализации той же функциональности, что и в even_items():

Цикл repeat

Цикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

В примере, даже если n будет равно 0, одна звездочка все равно будет напечатана.

Break и Continue

Для выхода из цикла предусмотрена процедура break в Паскале. Break досрочно прекращает выполнение циклов while, repeat и for.

Процедура Continue досрочно выходит из текущей итерации цикла, но, не завершая его, а переходя к следующей итерации.

Рассмотрим использование процедур выхода из цикла Continue и Break в Паскале (будем использовать цикл while):

Пример: Программа вывода на экран степеней двойки с использованием процедур break и continue

1234567891011var a : integer ; begin a : = 1 ; while a< 1000 do begin a : = a * 2 ; if a = 64 then continue ; if a = 256 then break ; write ( a : 4 ) ; <4 позиции на вывод каждого числа>end ; end .

var a:integer;begina:=1;while a<1000 dobegin a:=a*2; if a=64 then continue; if a=256 then break; write(a:4); <4 позиции на вывод каждого числа>end;end.

В результате программы на экране будут напечатаны: 2 4 8 16 32 128.
Число 64 пропущено, так как при условии a=64 происходит выход из текущей итерации (continue) и число не выводится на экран, а при a=256 выполнение цикла прерывается окончательно (break), так и не распечатав число 256.

Решить рассмотренную задачу с процедурами

Цикл for немного отличается от предыдущих двух циклов. Что он делает, скажем, для каждого из элементов в данном списке, выполните заданный набор команд. Он имеет следующий синтаксис.

Цикл for принимает каждый элемент в списке (поочередно, один за другим), назначает этот элемент как значение переменной var , выполняет команды между do и done, затем возвращается к началу, захватывает следующий элемент в список и повторить.

Список определяется как ряд строк, разделенных пробелами.

Вот простой пример для иллюстрации:

Давайте разберем это:

  • Строка 4 — Создайте простой список, который представляет собой серию имен.
  • Строка 6 — для каждого из элементов в списке $ names присваивает элемент переменной $ name и выполняет следующие команды.
  • Строка 8 — эхо-имя на экране, чтобы показать, что механизм работает. У нас может быть столько команд, сколько нам нравится.
  • Строка 11 — повторите еще одну команду, чтобы показать, что скрипт bash продолжал выполнение как обычно после обработки всех элементов в списке.

Циклы в Python

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

Сегодня мы рассмотрим циклы в языке Python, а именно циклы for и while, операторах break и continue, а также слово else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.

Цикл со счетчиком for

Этот цикл проходится по любому итерируемому объекту (например строке или списку), и во время каждого прохода выполняет тело цикла.

Как правило, цикл for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного. Например:

Рассмотри пример – вывод чисел определенного диапазона:

Первый цикл for выводит значения от 0 до 9. Указываем только верхнюю границу. Если нижняя граница не указана, то подразумевается, что это 0.

Второй цикл for работает от 0 до 50, а увеличение счетчика происходит сразу на 5 единиц.

Третий цикл работает от 10 до 0, уменьшение счетчика происходит на единицу (-1). Поэтому числа будут выведены в обратном порядке.

Функция range() возвращает последовательность цифр.

Цикл while

While – один из самых универсальных циклов в Python, поэтому довольно медленный. Он выполняет тело цикла до тех пор, пока условие цикла истинно. Например:

Напишем небольшую программу с помощью цикла while. Листинг:

Циклы в Python

В коде мы создаем переменную “response”. Цикл while будет выполняться до тех пор, пока значение нашей переменной не будет равно “toyota”.

Как и в случае с оператором if, тело цикла может состоять из нескольких операторов, заключенных в один блок. Блоком считаются строки, следующие друг за другом, с одинаковым отступом.

С помощью оператора if вы можете улучшить нашу программу или придумать свою. Пишите в комментариях свои примеры программ с циклом while.

Бесконечный цикл

Неправильно составленное условие может привести к бесконечному циклу. Рассмотрим пример:

Цикл будет выполняться, пока k больше 5. Изначально k больше 5, далее значение k только увеличивается, поэтому получается бесконечный цикл.

Оператор continue

Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while). Например:

Оператор break

Оператор break досрочно прерывает цикл. Например:

else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же “естественным” образом.

Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break. Например:

Программа “Уровень доступа”

Создадим небольшую программу используя логические операторы. Листинг:

По умолчанию уровень доступа равен 0. Если это так, то доступ закрыт. Если уровень отличается от 0, то программа выводит приветствие и сообщает уровень доступа.

В начале мы в двух циклах while запрашиваем логин и пароль. Благодаря наличию not мы будем запрашивать логин и пароль до тех пор, пока они не будут введены.

Далее мы сравниваем введенные значения с определенными константами и определяем уровень доступа.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector