Це наш останній урок перед тим як ми почнемо працювати з вводом від користувача. Тобто наступні уроки будуть ще цікавішими…

Цикли

Отже, переходимо до циклів у Пітоні.

Вступ

Просто уявіть, що вам потрібно зробити так, щоб ваша програма виконала певно одну і ту ж саму дію 20 разів. Що ви у цьому випадку будете робити? Звичайно ви можете скопіювати один і то й же ж кусок коду 20 разів, і мати важко-читабельний код, вже не кажучи про її швидкість. Або натомість ви можете сказати комп’ютеру, щоб він повторював той самий кусочок коду між точкою А і точкою Б допоки ви самі не зупините його. У цьому випадку ми назвемо такий підхід циклом.

Цикл “while”

У наступному прикладі ви можете бачити цикл під назвою “while“:

Як ця програмка працює? Давайте пройдемось по ній тепер українською рядок в рядок:

А тепер давайте спробуємо відтворити процес нашого коду комп’ютером. Тобто що він думає про кожен рядочок нашої програми:

То ж, коли ви лише вивчаєте цикли, пробуйте думати про них у тому напрямку як описано вище, щоб краще зрозуміти їхню суть і те як інтерпретатор обробляє їх. Тепер загальна структура і деякі моменти циклу ‘while‘:

І накінець розробу циклу ‘while‘ приклад. Спробуйте в голові продумати те, як ‘пітон’ буде обробляти даний цикл і що в кінцевому результаті ви отримаєте на екрані після виконання даного прикладу. Якщо зовсім важко – тоді просто передрукуйте у свій файл і запустіть. Тоді спробуйте проаналізувати, чому вивід програми саме такий.

Пам’ятаєте, щоб написати свою програму, достатньо створити новий файл (у IDLE або текстовому редакторі на вибір), ввести код програми, і тоді запустити даний файл (пітон модуль) пітон інтерпретатором. Якщо виникаються труднощі – будь-ласка зверніться до наших попередніх уроків Інсталяція Пітона і Програми у Файлах.

Булеанівські (логічні) вирази (Булеан…  що це?!?)

В попередній секції ми розглянули оператор циклу ‘while‘. Мабуть у вас виникло питання, а що це за такі вирази, що йдуть одразу за ключовим словом ‘while‘ і закінчуються двома крапками ‘:’ . Це логічні (або ще їх називають булеанівські) вирази.

Це математичний вираз. Для тих, хто не пам’ятає, або і ніколи не знав, коротко: логічний вираз означає певне питання, на яке можна відповісти лише з допомогою слів ТАК (True) або НІ (False).

Наприклад, якщо ви хочете сказати, що ви одного росту з вашим сусідом, тоді ваш логічний вираз був би:

І цей вираз був би правдивим (True). Якщо ж ви нижчий за вашого сусіда, тоді ви б сказали:

І цей вираз також був би правдивим. Проте, якщо б ви сказали, що:

Тоді результат даного виразу був би Хибним (False, ще можна сказати Негативним, Фальшивим, Неправдивим).

Так само працює наш цикл ‘while‘ з даним йому логічним виразом. Якщо логічний вираз є правдивим (True), лише тоді тіло цикла виконується. Знаючи це, тепер пройдемось по усіх існуючих логічних операторах  (це символи, що представляють певну дію) у Пітоні, які використовуютсья у логічних виразах. Більшість дій ви уже знаєте зі шкільного курсу математики:

Оператор Його Значення
< менше ніж
<= менше ніж, або рівне
> більше ніж
>= більше ніж, або рівне
!= не рівне
<> не рівне (альтернативне позначення)
== дорівнює

Зверніть увагу, не плутайте оператор ‘=‘ з оператором ‘==‘. ‘=‘ – присвоює значення змінній зліва від нього значення те, що є справа. А оператор ‘==‘  каже чи значення ліворуч дорівнює значенню праворуч, таким чином вертає True або False.

Умовні оператори

Ок, виглядає ніби ми більш-менш розібралися з ‘while‘ циклом. Якщо є питання, або щось не достатньо дедально пояснено у даному уроці – будь-ласка коментуйте зі скаргами, і я обов’язково оновлю урок, і відповім на кожен комент!

Тепер, рухаємось далі – до умовних операторів.

Умовні оператори використовуються там, де потрібно запускати частину коду лише при певних умовах, а не завжди. Вони якимось чином подібні до ‘while‘ циклу, який ми щойно проходили з вами. Адже тіло даного циклу запускається лише коли умова циклу задовольняється (тобто є правдивою, True). Проте, тіло умовного оператора запускається лише один раз. От і вся різниця 😉

Найбільш поширеним умовним оператором у більшості мов програмування є оператор ‘if‘. І одразу до прикладу:

Це досить простий приклад, у якому ми скористалися змінною ‘x’. Їй спочатку присвоїли значення 1. А потім подивилися чи дійсно вона рівна 1, і якщо таки рівна, аж тоді роздрукували її значення на екран. Тобто оператор ‘if‘ у даному випадку просто перевірив чи значення змінної x рівне 1.

А тепер розглянемо загальну структуру побудови оператора ‘if‘:

Ще давайте розберем трохи складніший випадок з оператором ‘if‘ + цикл ‘while‘:

Виглядає не так просто? Ми ускладнили цей приклад тим, що використали умовний оператор ‘if‘ всередині циклу ‘while‘. Як бачимо, цикл буде запускати своє тіло 20 разів (n <= 20). Але рядочок ‘print i‘ не кожен раз запускається, а лише коли задовільняється умова оператора всередині, якого він знаходиться (i % 2 == 0). Пам’ятаєте, що означеє операція % ? Так, правильно, остача від ділення. Тобто, якщо остача від ділення  значення змінної ‘i‘ на 2 є нуль (а це як ми знаємо з математики, означає що значенням буде парне число), лише тоді значення змінної ‘i‘ буде виведено на екран.

Тобто даний кусок коду друкує усі парні числа від 1 до 20. Тепер звучить просто? 🙂

‘else’ та ‘elif’ – Коли це не є Правдивим (True) виразом

Є багато варіантів використання ‘if‘ оператора. Але, що робити коли умова даного оператора є Хибною (False), тіло оператора відповідно не виконується, але ви хочете робити щось інше у цьому випадку?

Для таких випадків ми маємо доповнення до умовного оператору ‘else‘ та ‘elif‘.

else‘ просто каже комп’ютеру, що робити у випадку коли умова оператора ‘if‘ не задовольняється. Наприклад:

k‘ є меншим ніж п’ять, тому виконується код що є під оператором ‘else‘, а код, що є під ‘if‘ – ніколи не буде виконуватися у даному випадку.

Тепер ‘elif‘. Цей оператор є просто скороченнням для того щоб сказати ‘else if‘. Тобто він виконується не лише коли умова головного ‘if‘ оператора не задовольняється, але ще й коли його власна умова (так, elif повенен мати власну умову, логічний вираз, навідміну від оператора ‘else‘) задовольняється. Наприклад:

Зрозуміло, що ‘if‘ умова поверне False, тому Пітон піде дивитися, що ж там з ‘elif‘. Він перевірить умову ‘elif‘ (a < 8), яка у даному випадку задовольняється (є правдива), тому тіло оператора ‘elif‘ виконається!

Зверніть увагу, що як ‘if‘, так і ‘else‘ та ‘elif‘, мають своє власне тіло, код під ними що починається з відступів. Все що без відступів, вже не є частиною даних операторів.

Ще один приклад. Тепер з використанням усіх трьох операторів одночасно!

Тобто ми можемо мати скільки завгодно ‘elif‘ операторів. Але лише один ‘if‘, і не більше одного ‘else‘ оператора. Оператори виконується в порядку їх використання. Також ‘else‘ мусить бути в самому кінці як показано у прикладі зверху, після ‘if’ i ‘elif‘.

Також зверніть увагу, після кожного логічного виразу ми маємо двокрапку ‘:‘. Він є обов’язковим для того, щоб дати знати інтерпретатору що це кінець умови оператора і далі за ним слідує початок тіла умовного оператора (або оператора циклу).

Відступи

Ще раз хочу наголосити, що код який запускається якщо умови є задоволені (True), Повинен Починатися з Відступів. Це означає, що якщо ви хочете щоб Пітон запускав наступні 5 рядочків коду всередині ‘while’ циклу, ви повинні ставити певну (однакову, зазвичай 4 пробіли) кількість пробілів на початку кожного з тих 5 рядочків коду.

Загалом це хороша практика у кожній мові програмування ставити пробіли у вкладених блоках для покращення читабельності. Але в Пітоні це не просто для покращення вигляду коду, в Пітоні це обов’язкова умова і частина синтаксису мови.

Глянемо на наступний трохи більший приклад з відступами:

У даному прикладі є два важливих слова англійською мовою. ODD – це непарне число, EVEN – це парне число. Якщо виникатимуть проблеми з коментарями англійською чи певними словами, будь-ласка, звертайтеся до онлайн перекладача.

Зверніть увагу на 3 рівні відступів у даному прикладі:

  1. кожен рядок у першому рівні починається без пробілів. Це головний програма, основний код і він запускається завжди!
  2. кожен рядок на другому рівні починається з чотирьох відступів. Коли там є ‘if‘ оператор або оператор циклу на першому рівні, все що є на другому рівні після цього – буде частиною того умовного оператора або оператора циклу. Аж допоки наступний рядок не почнеться без відступів, тобто буде частиною першого рівня.
  3. Кожен рядок на третьому рівні починається відповідно з 8 пробілів. В даному прикладі третій рівень – це в основному тіло умовного оператора ‘if‘ та його колег: ‘elif‘ i ‘else‘.
  4. І це може продовжуватися безкінечно, поки мізки в людини що пише код не закіплять і перестане розуміти що вона пише 🙂 Насправді у всьому треба шукати золоту середину, якщо у вас виходить більше ніж 5-10 вкладень, значить щось не так, і швидше за все можна краще переписати код.

І на завершення…

Є ще інший оператор циклу в Пітоні – ‘for‘, але його ми розберемо у одному з наступних уроків, після того як вивчимо що таке списки.

А наразі, можу вас привітати з успішним завершенням непростого уроку про цикли та умовні вирази і оператори в Пітоні!

В наступному уроці ми з вами перейдемо до вивчення функцій, та роботи з вводом від користувача. Буде цікаво!

Прошу коментувати з вашими питаннями, а також запитами для покращення уроку. Буду радий допомогти!