Циклы

Существуют два оператора цикла: while и for .. in. Оба варианта могут быть с else частью.

while

while условие_продолжения_цикла:
    тело_цикла

или

while условие_продолжения_цикла:
    тело_цикла
else:
    выполняется_если_не_было_break

Тело цикла пишем с отступом

Найдем сумму чисел от 1 до n=10 (включительно) с помощью цикла while:

n = 10
i = 1
sum = 0

while i <= n:
    sum += i

print(sum)

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

while True:
    print('hi')

for .. in - перебрать по одному элементы последовательности

Можно перебирать по 1 элементу последовательность, применяя for .. in. Переберем по символу строку 'Hello':

for x in 'Hello':
    print(x)

Напечатает:

H
e
l
l
o

Пример: индекс последнего вхождение символа в строке или -1

Найдем номер последнего вхождения буквы k = 'l' в строку 'Hello':

i = 0
ind = -1
for x in 'Hello':
    if x == k:
        ind = i
print(ind)

При k = 'l' напечатает 3 (нумерация c 0), а при k = 'z' напечатает -1. Получим номер последнего вхождения буквы в строку или -1, если буквы в строке нет.

continue - пропускаем итерацию цикла

Будем при поиске пропускать каждую вторую букву, т.е. буквы 'e' и 'l'.

continue - перейти к следующей итерации цикла.

i = 0
ind = -1
for x in 'Hello':
    if i % 2 != 0:  # пропускаем каждый второй символ
        continue
    if x == k:
        ind = i
print(ind)

break - прерываем цикл

Найдем индекс первого вхождения символа в строку. Как только его нашли, дальше цикл выполнять не надо. Прервем цикл с помощью оператора break.

i = 0
ind = -1
for x in 'Hello':
    if x == k:
        ind = i
        break

# сюда передаст управление оператор break
print(ind)

for .. else

Можно использовать расширенную форму оператора for:

for переменная in последовательность:
    операторы цикла
else:
    выполняется, если в цикле не выполнялось break

Напечатаем YES, если символ из переменной k в строке есть, и NO, если его нет:

for x in 'Hello':
    if x == k:
        print('YES')    # печатаем YES и выходим из цикла
        break
else:
    print('NO')         # если break не было, печатаем NO

Оператор while тоже имеет форму while .. else

range(от, до, шаг) - последовательность чисел

Напечатаем числа от 0 (включительно) до 10 (не включая 10). Последовательность чисел [0, 10) сделаем с помощью range.

for x in range(10):
    print(x)
  • range(10) - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • range(3, 10) - 3, 4, 5, 6, 7, 8, 9
  • range(3, 10, 2) - 3, 5, 7, 9

enumerate - индексы и значения

Можно перебирать не только по значениям, но получать на каждом шаге и индекс, и значение.

enumerate - дает последовательность пар индекс, значение

for i, x in enumerate('Hello'):
    print(i, x)

напечатает:

0 H
1 e
2 l
3 l
4 o

results matching ""

    No results matching ""