Питон примеры программ с циклом

При написании программ часто возникает потребность делать одно и то же действие для нескольких объектов. Например, сохранить 5 пользователей:

user1.save() user2.save() user3.save() user4.save() user5.save()

Кода пока не очень много, но что будет, когда пользователей будет 20? А что если нужно обработать 3 миллиона пользователей вашего сайта? Помогут циклы.

Цикл по списку

Цикл — это запуск одного и того же кода для каждого элемента в списке. Вот как выглядит пример выше с использованием списка и циклов:

users = [user1, user2, user3, user4, user5] for user in users: user.save()

Каждый элемент списка users по очереди подставится в переменную user и для него запустится код с отступом.

Что, всё ещё копипастить пользователей в список? Нет, чаще всего такое не требуется и код выглядит так:

users = get_users_from_database() # возвращает список всех пользователей for user in users: user.do_something() # работа с каждым пользователем по очереди user.save()

Снова, каждый пользователь по очереди попадёт в переменную user , у него вызовется метод .do_something() , а затем метод .save() .

4 совета как ЛУЧШЕ писать циклы For на Python

Цикл по словарю

Словарь очень легко можно превратить в 2 списка:

capitals = «Russia»: «Moscow», «England»: «London», «China»: «Beijing», «Italy»: «Rome» >

Первый список — ключи словаря (первые элементы в парах):

print(capitals.keys()) # [‘Russia’, ‘England’, ‘China’, ‘Italy’]

Второй список — значения (вторые элементы в парах):

print(capitals.values()) # [‘Moscow’, ‘London’, ‘Beijing’, ‘Rome’]

По умолчанию, если передать в for словарь, он начнёт перебирать ключи:

for country in capitals: print(country) # Russia # England # China # Italy

Но так же через ключи словаря можно добраться и до значений:

for country in capitals: capital = capitals[country] print(«столица <> это <>».format(country,capital)) # столица Russia это Moscow # столица England это London # столица China это Beijing # столица Italy это Rome

В Python есть ещё один способ добраться до значений словаря, использовать .items() . Этот метод превращает словарь в список кортежей:

print(capitals) # # «Russia»: «Moscow», # «England»: «London», # «China»: «Beijing», # «Italy»: «Rome» # > print(capitals.items()) # [ # (‘Russia’, ‘Moscow’), # (‘England’, ‘London’), # (‘China’, ‘Beijing’), # (‘Italy’, ‘Rome’) # ]

И теперь цикл сможет итерироваться сразу по двум переменным:

for country, capital in capitals.items(): print(«столица <> это <>».format(country, capital)) # столица Russia это Moscow # столица England это London # столица China это Beijing # столица Italy это Rome

Выполнить код несколько раз

Что, если нужно выполнить код заранее известное количество раз? например, сгенерировать 10 случайных чисел и вывести на экран? По какому такому списку мне перебиать элементы?

Python. Вложенный цикл for

В таком случаевыручает функция range() .

Что она делает проще показать на примерах:

  • range(5) — вернёт список из 5 элементов, начинаяс нуля: [0, 1, 2, 3, 4]
  • range(2,10) — вернёт список из элементов от 2 до 10: [2, 3, 4, 5, 6, 7, 8, 9]
  • range(2,10,3) — вернёт список из каждого третьего элемента от 2 до 10: [2, 5, 8]
Читайте также:
Сделать экран ярче программа

Теперь, научившись генерировать списки нужной длины, можно сгенерировать 10 случайных чисел:

import random for number in range(10): print(random.randint(1,100))

В терминал выведется 10 случайных чисел от 1 до 100. Работает так же, как и ранее: range(10) — это список с числами от 0 до 9. Они по очереди подставятся в переменную number , но ни на что не повлияют, т.к. в коде «внутри for » переменная number не используется.

Строка — тоже “список”

Python запросто переводит одни типы данных в другие. Он может притвориться, что строка — это список из её символов:

text = «Девман» for letter in text: print(letter) # Д # е # в # м # а # н

Можно превратить строку в список более явно с помощью функции list() :

text = «Девман» my_list = list(text) print(my_list) # [‘Д’, ‘е’, ‘в’, ‘м’, ‘а’, ‘н’]

Что дальше

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Источник: dvmn.org

For Python. Циклы For

Основы

Автор Иван Душенко На чтение 11 мин Просмотров 6.8к. Опубликовано 18.10.2021

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

Понятие циклов

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

У итерации есть «тело»: проснуться, умыться, одеться, почистить зубы, позавтракать, собрать портфель, дойти до школы и т. д. Итерация может прерваться – ученик почувствовал себя плохо и ушёл с уроков. Весь цикл тоже может быть прерван: ученик перешёл на домашнее обучение. В цикл могут быть вложены другие циклы: внутри итерации «поход в школу» есть цикл «посещение уроков».
Всё это есть и в программировании, в частности, в языке Python. В Питоне есть два вида циклов: for и while.

Базовый синтаксис

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

Источник: pythoninfo.ru

Оператор цикла while

На этом занятии начнем знакомиться с еще одним ключевым элементом компьютерных программ – циклами. Вначале, давайте я на простом примере покажу, о чем идет речь. Представим, что нам нужно вычислить сумму целых чисел от 1 до N. Причем, N может быть сколько угодно большой: тысяча, миллион и так далее.

Читайте также:
Как скомпилировать программу на java в командной строке

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

Циклы позволяют реализовывать некие повторяющиеся действия. Например, предположим, что маленькие панды прыгают с горки в течение часа, пока мама-панда не позовет всех к столу – кушать. На уровне текста это можно записать, так:

цикл (пока не прошел час):
прыгаем с горки

То есть, пока истинно условие, цикл работает, как только условие становится ложным – прошел час, цикл завершается. Ровно так работает цикл while, о котором и пойдет речь на нашем занятии. Он имеет, следующее определение (синтаксис):

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

Обратите внимание на форматирование. Здесь также, как и в условных операторах, набор операторов внутри тела цикла должны иметь одинаковые отступы относительно ключевого слова while.

Давайте вернемся к исходной задаче – вычисления суммы чисел от 1 до N и посмотрим, как здесь нам поможет цикл while. Вначале определим три вспомогательные переменные: N – значение последнего слагаемого; s – для хранения вычисленной суммы (начальное значение 0); i – значение текущего слагаемого (начинается с 1):

N = 1000 s = 0 i = 1

Далее, так как сумму нужно вычислять, пока слагаемое i не достигнет значения N, то условие цикла можно определить, следующим образом:

while i N:

А внутри цикла будем выполнять следующие действия:

s += i i += 1

Вначале i равна 1 и эта единица прибавляется к сумме s. После чего i увеличивается на 1 и становится равной 2. Затем, выполняется проверка условия цикла. Пока оно у нас истинно, поэтому снова попадаем внутрь тела цикла и к s прибавляется уже значение 2, а i опять увеличиваем на 1 и оно становится равным 3. И так до тех пор пока i не станет больше N. К этому моменты мы просуммируем все числа и результат будет храниться в переменной s. Вот принцип работы циклов, причем, во всех языках программирования, не только в Python.

Также однократное выполнение тела цикла в программировании называют итерацией. Я буду часто использовать этот термин, поэтому привел его, чтобы вы меня правильно понимали.

Давайте реализуем теперь эту программу на Python и посмотрим как она сработает.

Возможно, у вас возник вопрос: а какие условия можно прописывать в циклах? В действительности, все те же самые, что и в условных операторах. В том числе и составные. Например, давайте будем вычислять сумму пока не дойдем до слагаемого N или до значения 50. Так как цикл работает, пока истинно условие, то его следует записать, так:

Читайте также:
Helper exe не является внутренней или внешней командой исполняемой программой или пакетным файлом

while i N and i 50: .

Смотрите, мы здесь указали делать цикл пока i меньше или равна N и меньше или равна 50. Если хотя бы одно из этих подусловий окажется ложным, то и все составное условие также станет ложным и цикл завершится. В результате, i достигнет или N или 50. Вот это нужно хорошо себе представлять: в циклах прописываются условия их работы, а не завершения.

Используя этот же цикл, мы легко можем поменять условие задачи и вычислить сумму чисел, которые меняются через один:

Для этого достаточно счетчик i увеличивать не на 1, а сразу на два:

i += 2

При этом, условие цикла можно оставить прежним. Он завершится, как только i превысит N или 50. Здесь уже нет гарантии, что последнее слагаемое будет именно N или 50, но нам это и не нужно, мы лишь указываем завершить цикл, когда превысим одно из этих значений.

Конечно, внутри тела цикла можно записывать любые операторы, в том числе и функцию print(). Давайте, например, отобразим в консоли цифры от 0 до 9:

i = 0 while i 10: print(i) i += 1

Если нам нужно реализовать убывающую последовательность чисел, например:

то это делается аналогично, только с уменьшающимся счетчиком:

N = -10 i = -1 while i >= N: print(i) i -= 1

Вообще, счетчик в цикле можно менять произвольным образом, например, умножая на два:

i *= 2

Здесь нет никаких ограничений.

В заключение этого занятия приведу еще пару примеров с оператором цикла while. Предположим, что пользователь вводит пароль, до тех пор, пока не введет верно. Это можно сделать, следующим образом:

pass_true = ‘password’ ps = » while ps != pass_true: ps = input(«Введите пароль: «) print(«Вход в систему осуществлен»)

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

Наконец, внутри цикла while можно прописывать, например, и условные операторы. Давайте выведем все числа, кратные 3, которые нам встретятся при переборе целых значений от 1 до N:

N = 20 i = 1 while i N: if i % 3 == 0: print(i) i += 1

Как видите, все достаточно просто и очевидно.

Здесь главное не забывать о правильном форматировании текста программы: функция print() находится внутри условия if, поэтому перед ней необходимы отступы. А сам блок условия имеет отступы относительно оператора while. Так определяются вложенные блоки операторов в языке Python. И об этом всегда следует помнить.

На этом мы завершим первое знакомство с оператором цикла while. На следующем уроке продолжим эту тему. А для закрепления текущего материала не забудьте выполнить несколько практических заданий. До встречи на следующем уроке.

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru