Цикл for в Python

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

Что такое цикл for

Цикл for в Python используется для перебора последовательностей (списков, кортежей, строк) и других итерируемых объектов. Перебор последовательности называется обходом. 

Синтаксис цикла

for значение in последовательность:
    Тело цикла for

Цикл продолжается до тех пор, пока мы не достигнем последнего элемента последовательности. Тело цикла for является отдельным блоком кода и отделяется отступом.

Блок-схема цикла 

Пример цикла

# Программа находит сумму элементов последовательности

# Список чисел
numbers = [6, 5, 3, 8, 4, 2, 5, 4, 11]

# Переменная, в которой хранится сумма
sum = 0

# Итерация цикла
for value in numbers:
    sum = sum+value

print("Сумма равна", sum)

Вывод:

 

Сумма равна 48 

Функция range()

С помощью функции range() мы можем сгенерировать последовательность чисел. range(10), к примеру, сгенерирует числа от 0 до 9 (всего 10 чисел).

Мы также можем определить начало, конец и размер шага —range(начало, конец, размер_шага). Если не указать шаг (размер_шага), то по умолчанию он будет равен 1.

Объект range в некотором смысле «ленивый». Когда мы вызываем этот объект, он не генерирует все числа, которые он «содержит». Но это и не итератор — он поддерживает операции in, len и __getitem__.

Эта функция не хранит все значения в памяти — это неэффективно. Для нее важны лишь начало, конец и размер шага — генерация следующего числа происходит на ходу.

Для вывода всех элементов следует воспользоваться функцией list().

Наглядный пример
print(range(10))
print(list(range(10)))
print(list(range(2, 8)))
print(list(range(2, 20, 3)))

Вывод: 

range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7]
[2, 5, 8, 11, 14, 17]

Функцию range() можно использовать для перебора последовательности чисел в цикле for. Индексация реализуется при комбинации с функцией len(). Пример:

# Программа для итерации списка с использованием индексации

genre = ['поп', 'рок', 'джаз']

# проходимся по циклу, используя индекс i
for i in range(len(genre)):
	print("Мне нравится", genre[i])

Вывод:

Мне нравится поп
Мне нравится рок
Мне нравится джаз

Цикл for с блоком else

В цикле for может быть дополнительный блок else. Блок else выполняется, если элементы последовательности закончились.

Для остановки цикла for используется ключевое слово break. В этом случае выполнение цикла останавливается.

Следовательно, блок else выполняется только в том случае, если выполнение цикла не было прервано оператором break.

Наглядный пример
digits = [0, 1, 5]

for i in digits:
    print(i)
else:
    print("Элементов в списке не осталось.")

Вывод:

0
1
5
Элементов в списке не осталось.

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

Оператор for...else можно использовать так: блок else выполнится только в том случае, если не выполнится оператор break.

Пример

# Программа выводит на экран оценку студента
student_name = 'Артем'

marks = {'Роман': 90, 'Максим': 55, 'Артур': 77}

for student in marks:
    if student == student_name:
        print(marks[student])
        break
else:
    print('Студент не найден.')

Вывод: 

Студент не найден.
codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©