У мові програмування Python (також «Пайтон» або «Пітон») є кілька способів зациклення деякої дії. Основні інструменти реалізації якої-небудь ітерації в Python - цикли while і for. Цикл while більш універсальний, ніж for, тому він працює повільніше. Однак це зовсім не означає, що він краще! Цикл for використовують набагато частіше, тому що з його допомогою реалізуються найскладніші завдання для створення багаторівневих і многоусловних програм.
Python: цикл з постумовою
Цикли з післяумовою - це цикли while, які є найбільш універсальними організаційними конструкціями у даної середовищі програмування. Цикл while працює за принципом «до тих пір, поки». Це означає наступне: поки деяка умова буде повертати істинне значення, він буде працювати! Дана конструкція називається «цикл», бо як функціональне управління циклічно повторюється, починаючи з первісного значення. Вихід з циклу while Python буде реалізований в той момент, коли значення стане хибним. У цей момент інтерпретатор передає виконання програми наступного функціонально-смислового сегменту, тобто нової рядку, яка розташовується після блоку з постумовою while.
У мові программированя Python цикли з післяумовою while мають наступний синтаксис:
1. While (умова) : 2. вираз
Виразом може бути як одна інструкція, так і декілька. Умовою завжди є деяке дійсне значення або ненульове. Подібна конструкція працює до тих пір, поки заданий умова являє собою істину.
Використання циклу while «Пайтон» на прикладі
Рассмотирим цикл while. Python досить цікаво структурує його ітерації:
a = 0
while a < 7:
print("A")
a = а + 1
Ми оголосили змінну "а" і поставили їй нульове значення. Потім поставили умову "while a < 7", то есть пока переменная "а" будет меньше чем число "7", то наш цикл будет виполняться до тех пор, пока не станет ложним.
А помилковим (тобто здійснить вихід з циклу) він стане тоді, коли змінна стане більше числа "7". Щоб це сталося, вона щоразу збільшується на 1 що ми вказуємо в рядку "а = а + 1" . Якщо запустити дану конструкцію, то літера "А" буде виведена 7 разів у стовпчик!
A
A
A
A
A
A
A
Нескінченний цикл while Python
Як зробити в Python нескінченний цикл while? Здогадатися зовсім не складно, адже цикл працює до тих пір, поки не отримає помилкове значення, а якщо значення цього просто немає? Відповідь на питання, напевно, вже і так всім зрозумілий. У яких же випадках нескінченний цикл необхідний для вирішення якого-небудь завдання? Даним прикладом послужить реалізація такої програми, як «годинник». Тут, безсумнівно, буде потрібно задіяти нескінченний цикл, який буде перманентно оновлювати і показувати час.
Нескінченний цикл дуже часто є помилкою початківців програмістів, які забувають додавати зміни умов циклу. Давайте поглянемо на наступний фрагмент коду Python. Цикли в даному разі итерируются нескінченно (після символу «#» йде коментар):
number = 1 # оголошуємо змінну number і присвоюємо їй значення 1 while number < 10: # создаем постусловие, в котором number меньше 10 print 'Hello' # виконуємо умова (друкуємо повідомлення «Hello»)
Таку програму не варто поспішати компілювати, тому як вона буде виконуватися нескінченно. Ми поставили такі умови, при яких ніколи не буде помилкового значення: умова «number < 10» в данном случае неизменно и истинно, поетому итерация будет осуществляться постоянно, виводя N-ое количество сообщений “Hello”. Для того чтоби остановить процесс вечной компиляции, нужно будет нажать комбинацию клавиш Ctrl+C в shell.
Python: синтаксис. Цикли while і for
Як вже було сказано вище, в мові програмування «Пайтон» існує кілька способів організації повторення групи виразів. На допомогу приходить цикл for, який трохи відрізняється від свого колеги while, тому як його конструкція дещо складніше, ніж просто постусловие. Про універсальність даного циклу говорити не будемо, так як її просто немає, проте можна зазначити, що цикл for працює набагато швидше, ніж while. Безліч шляхів для вирішення і швидкодію даної конструкції трохи виграють у циклу з постумовою, тому його набагато частіше використовують для виконання безлічі тривіальних завдань. Які завдання стоять перед циклом for? Безсумнівно, ті ж самі, що і у while – итерировать які-небудь процеси. В програмках, виконаних на "Пітоні", широко застосовується цикл for, який здатний здійснювати реалізацію обходу заданого безлічі елементів і виконувати в своєму тілі різні ітерації над ними. Можливості цієї конструкції можна застосовувати при обробці рядків або списків точно так само, як і будь-який інший итерируемий об'єкт.
Приклад використання циклу for в Python
Припустимо, у нас є деякий список чисел, і нам потрібно кожний елемент (тобто число) збільшити на три одиниці. Реалізувати таке завдання ми зможемо шляхом зациклення, методами циклу for.
Давайте розглянемо невеликий приклад, де ми будемо виконувати відповідні для цього дії (після символу «#» йде коментар):
spisok_chisel =[5, 15, 25, 35, 45, 55, 65, 75, 85, 95]#оголосили масив із 10 цифр count = 0 # створили лічильник з нульовим значенням for elements in spisok_chisel: # перебираємо масив і записуємо його в elements spisok_chisel[count]= elements + 3 # число з масиву збільшуємо на три count = count + 1 # переходимо до наступного числа за індексом
Результат виконання вищенаведеної конструкції буде таким:
spisok_chisel =[8, 18, 28, 38, 48, 58, 68, 78, 88, 98]
У нашому прикладі є змінна count, яка нам необхідна для того, щоб відзначати змінюються значення в масиві «spisok_chisel». У змінної count записуються значення індексу кожного елемента в масиві (кожне число в списку). Змінна «elements» пов'язує отримані значення в списку. У циклі for ми спостерігаємо, як реалізується обробка кожного чисельного об'єкта в списку. Всередині циклу кожному числовому об'єкту з індексом «count» додається сума поточного итерируемого елемента і трійки. Потім наш індекс «count» збільшується на один, а потік реалізації програми повертається в початок оголошення конструкції for. Таким чином, цикл буде працювати до тих пір, поки не обробить кожен елемент в масиві, заданий за умовою. Якщо який-небудь елемент відсутній, але заданий за умовою, процес циклу буде завершено. Звернемо увагу на ще один нюанс: якщо не написати рядок «count = count + 1», то, незважаючи на те, що об'єкти масиву успішно обработаются, результат постійно буде додаватися до першого числового об'єкту c нульовим індексом. Тепер ми можемо згадати про принципи роботи циклу while і виявити різницю (нагадаємо, що в Python вихід з циклу з постумовою здійснюється виходячи з логічних критеріїв – true (цикл продовжує працювати) або false (цикл зупиняється)).
Як обробити значення рядка в Python за допомогою конструкції for?
У кожній мові програмування існують цикли, і працюють вони, як правило, по одному і тому ж принципу, відмінності помітні лише в синтаксисі. Однак цикл for у мові "Пайтон" не є звичайним і тривіальним, тому як принцип його роботи не обмежується лічильником. Дана конструкція перебирає кожен елемент окремо. Все це легко пояснити на прикладі роботи з рядками, але для початку давайте розберемося з складом циклу for: for змінна
у змінній зберігається результат роботи циклу in переменная_2 ключове слово «in» - це обов'язкова умова при роботі з цикл «for». З переменной_2 витягуємо значення, яке будемо итерировать. Для наочності та зрозумілості давайте розглянемо невеликий приклад, як працювати і перебирати рядки в Python:
char = 'програмування' # Оголосили змінну і надали їй значення рядка for slovo in char: # Створюємо змінну slovo, в якій будуть зберігатися індекси перебору з char print (slovo, end = ' ^ ') # Виводимо slovo і після кожної букви вставляємо символ – пташку.
Результат роботи скрипта:
П ^ р ^ о ^ р ^ р ^ а ^ м ^ м ^ і ^ р ^ о ^ у ^ а ^ н ^ і ^ е
Оператор continue
Оператор continue реалізує перехід на виконання наступного циклу, заданого за умовою, незважаючи на залишок у тілі циклу. Використовувати оператор continue можна в двох циклах – for і while. Розглянемо приклад:
for count in 'повторимо кожну букву, крім про' if count == 'o': continue print (count * 2 end=")
Результат буде наступний:
Ппввттрриимм ккаажжддууюю ббууккввуу,, ккррммее
Коли обробник знайшов букву "о" в рядку 'повторимо кожну букву, крім про', то виконання програми відразу було перенаправлено на рядок після слова 'continue', де за умовою було задано дублювати кожну букву.
Оператор break
Ключове слово «break» вставляється в те місце, де цикл повинен перерватися, не чекаючи її завершення, яке було задано умовою. Дана конструкція дуже часто використовується при написанні програм з великою кількістю логіки і умов. Розглянемо невеликий приклад роботи оператора break:
for count in 'повторимо кожну букву, крім про' if count == 'o': break print (count * 2 end=")
Результат буде наступний:
пп
Коли обробник знайшов букву "о" в рядку 'повторимо кожну букву крім, про', то виконання програми відразу було зупинено, незважаючи на те, що наступний рядок містить деякі умови для циклу.
Магічне слово else
У циклі будь-якого виду можна застосувати оператор else. Для чого він потрібен? Він робить перевірку на те, чи був здійснений вихід з циклу методами break або ж звичайним шляхом. Блок з заданими правилами всередині else почне реалізацію лише за умови, якщо вихід з циклу було здійснено без застосування конструкції break. Розглянемо невеликий приклад:
for count in 'привіт світ': if count == 'я': break else: print('У вашій фразі немає букви "я"')
Результат виконання скрипта:
У вашій фразі немає букви «я»
Приклади циклів з зворотним порядком у мові програмування Python
Як реалізується в Python зворотний цикл? Давайте уявимо, що пишемо програму, яка повинна розпізнавати символьну рядок і друкувати її у зворотному порядку. Як це реалізувати? Розглянемо приклад нижче:
slovo = 'програмування' new_slovo =[] for count in range (len(s), 0 -1): new_slovo.append(s[i-1]) new_slovlo [‘п’, ‘р’,’о’,’г’,’р’,’а’,’м’,’м’,’и’,’р’,’о’,’в’,’а’,’н’,’и’,’е’] print (new_slovo) [‘п’, ‘р’,’о’,’г’,’р’,’а’,’м’,’м’,’и’,’р’,’о’,’в’,’а’,’н’,’и’,’е’] print(".join(new_slovo))
Результат роботи скрипта:
еинавориммаргорп
Вкладені цикли
У мові програмування Python цикли існують також і вкладені, тобто розміщені в тілі іншого. В кожному циклі може бути свій вкладений цикл, і так можна будувати сходи до нескінченності. На першій ітерації зовнішній цикл звертається з викликом до внутрішнього циклу, який виконується до власного завершення, потім все управління перенаправляється в тіло зовнішнього циклу. В кожній мові є свої особливості вкладених циклів, давайте ж розберемося, як вони влаштовані в мові програмування «Пайтон».
Якщо використовуються вкладені цикли, Python пропонує наступний синтаксис:
for змінна in послідовна мінлива: for змінна in послідовна мінлива дія(дії) дія(дії)
До особливостей вкладених циклів можна віднести те, що всередині циклу будь-якого типу можна використовувати також будь-який тип циклу! Це означає, що в циклі while (або for) може бути вкладений цикл for або знову ж while і навпаки.