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

При написании программ часто возникает потребность делать одно и то же действие для нескольких объектов. Например, сохранить 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 может быть сколько угодно большой: тысяча, миллион и так далее.

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

Понятно, что мы не можем здесь просто записать операторы сложения чисел друг за другом для вычисления этой последовательности. Тем более, что на момент написания программы, 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. Так как цикл работает, пока истинно условие, то его следует записать, так:

Читайте также:
Программа для построения регрессионной модели

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