
Методички / 4. Циклы. Теория
.pdfЗанятие 4. Циклы.
Цикл – это фрагмент кода, который повторяется многократно. Т.е. благодаря циклам мы можем повторять код несколько раз, причем число повторов мы можем задать сами.
Цикл while (цикл с предусловием)
В нем сначала идет проверка условия (как в условной конструкции if), если условие истина, тогда идет фрагмент кода, который мы повторяем в цикле.
while выражение:
Фрагмент кода
Сначала идет while условие, затем идет фрагмент кода, который мы выполняем в цикле. Иными словами, сначала мы записываем переменную, обычно для этого используется буква i, и ей присваивается значение. Далее записывается цикл while, в котором ставится какое-либо условие.
Например:
i=0
while i < 10:
print (i)
Мы записали переменную, затем задали условие: пока наша переменная будет меньше 10, будет выполняться условие. Но сейчас наш цикл будет выполняться бесконечно. Поэтому добавляем следующее:
i=0
while i < 10:
print (i)
i +=2
Т.е. за одну итерацию будет добавляться +2, соответственно всего 5 раз выведется данный цикл.
Результат:
0
2
4
6
8
Оператор break останавливает цикл независимо от того, где мы находимся в цикле.
i = 1
while i<=10:
print (i)
i=i+1
Break
continue (прерывает проход цикла, который идет в данным момент и переходит сразу на следующий, т.е. пропускает одну итерацию).
Задание: нужно вывести числа от 1 до 10, кроме числа 5.
i = 1
while i<=10:
If i !=5:
print (i)
i=i+1
continue
результат
1
2
3
4
6
7
8
9
10
Цикл for – это (строковый) цикл, перебирающий итерируемые объекты (итерирование – процесс перебора).
Задание. Нужно разбить строку «Привет, группа 137!» на символы (на буквы, пробелы, запятые, восклицательный знак). Например, буква п – первый символ, буква р – второй, буква и – третий и так далее. В данном случае строка «Привет, группа 137!» является итерируемым объектом.
Операторы continue и break с циклом for.
for i in “Hello group 137”:
if i == “g”:
break
print(i*2, end = ‘ ’)
Результат
Hheelllloo
Что произошло? Вывелось слово Hello с удвоенными буквами и 2 пробела, а дальше произошел выход из цикла. Т.е. break не пропускает какую-либо итерацию, а выходит из цикла, когда доходит до буквы g.
for i in “Hello group 137”:
if i == “g”:
continue
print(i*2, end = ‘ ’)
Результат
Hheelllloo rroouupp 113377
Что произошло? Вывелась строка с удвоенными буквами, но когда цикл дошел до буквы g, итерация была пропущена.
Если нам необходимо вывести функцию несколько раз, то используется встроенная функция range (выдает последовательность целых чисел). Она принимает в себя 2 параметра: первый – с какого числа она берет эту последовательность, второй – до какого числа она берет эту последовательность.
Задание: вывести строку «Привет, группа 137!» 5 раз.
name = «Привет, группа 137!»
for i in range(1,5): # в данном случае он возьмет 1, но десятку не возьмет, т.е. напечатает меньше раз, чем нам нужно
print(i)
name = «Привет, группа 137!»
for i in range(1,6):
print(name)
Задание.
Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89].
Выведите все элементы, которые меньше 5.
for elem in a: if elem < 5:
print(elem)
print([elem for elem in a if elem < 5])
Задание.
Напишите программу для слияния нескольких словарей в один.
dict_a = {1:10, 2:20}
dict_b = {3:30, 4:40} dict_c = {5:50, 6:60} result = {}
for d in (dict_a, dict_b, dict_c): result.update(d)
Задание.
Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втором.
set_1 = set(['HCT', 'HGB', 'LYMPH']) set_2 = set(['LYMPH', 'MCV'])
print(set_1 - set_2)
Задание.
Напишите программу, которая считывает со стандартного ввода целые числа, по одному числу в строке, и после первого введенного нуля выводит сумму полученных на вход чисел.
a = int(input()) b = 0
while a != 0: b += a
a = int(input()) print(b)
Задание для самостоятельной работы.
Напишите программу, которая считывает целые числа с консоли по одному числу в строке.
Для каждого введённого числа проверить:
если число меньше 10, то пропускаем это число; если число больше 100, то прекращаем считывать числа;
в остальных случаях вывести это число обратно на консоль в отдельной строке.
Пример ввода:
101
Вывод:
(пусто)
Пример ввода:
11
5
99
Вывод:
11
99
while 1 == 1:
q = int(input()) if q < 10:
continue if q > 100:
break print(q)