Засоби керування логікою (умовна інструкція if, цикли while,for) в Python |
Написав Invader | |||||
Середа, 26 грудня 2012 18:29 Переглядів: 8627
|
|||||
Вступне слово У програмах, що ми писали до цього часу завжди була послідовність інструкцій, яку Python чистосердечно виконував саме в тому порядку в якому вони з’являлися в тексті програми. Що якщо ти хочеш змінити послідовність роботи програми? Наприклад, ти хочеш щоб програма приймала певні рішення і робила різні речі в залежності від ситуації. Наприклад, виводила "Добрий ранок" чи "Добрий вечір" в залежності від часу доби. Як ти вже мабуть здогадався цього можна досягти, використовуючи інструкції керування потоком виконання програми. В Python існує три таких інструкції — if, while, for. Умовна інструкція if в Python Інструкція if використовується для перевірки якої-небудь умови (і саме тому називається умовною інструкцією) і якщо дана умова вірна, ми запускаємо відповідний блок інструкцій на виконання, інакше (якщо вираз який перевіряється поверне логічне "не істинно") запускається інший блок виразів. Запам’ятай що блок інакше (else) необов’язковий. Отже, поїхали. Програма
виведе: $ python if.py Програму виконано $ python if.py Програму виконано $ python if.py Програму виконано Як це працює: В цій програмі користувач мусить вгадувати число. Ми отримуємо від нього число і перевіряємо чи це те число яке ми маємо. Спочатку відбувається привласнення змінній number числа 23. Потім, за допомогою функції input() отримуємо число від користувача. Функція це просто шматок коду, який можна повторно використовувати (виконувати) просто написавши ім’я функції (тобто викликавши функцію, яка запустить певний програмний код на виконання). Більше інформації про функції ти дізнаєшся з наступного розділу. В рядку з цим кодом: guess = int(input('Введи число : ')), ми передаємо функції input текст, який вона виводить на екран і чекає данних від користувача. Як тільки ти щось введеш і натиснеш Enter — функція поверне те що ти ввів як дані рядкового типу. Потім ми конвертуємо ці дані в тип integer користуючись іще однією функцією — int(). Як я вже писав input() поверне дані від користувача назад в програму, в цьому випадку у змінну guess. Насправді int це клас, але все що тобі потрібно знати на даний момент так це те що за допомогою неї можна перетворювати дані типу string в тип int (звісно ж припускаючи те, що ти зібрався конвертувати можна привести до числового типу, тобто "якийсь текст" ти не зможеш перетворити в число). Далі ми порівнюємо дані у змінній guess з числом, яке нами було вибрано (23). Якщо ці дві величини рівні між собою, на екран виводиться повідомлення про успіх. Зауваж, що відступи у рядках використовуються для того, щоб інтерпретатор Python міг розподіляти інструкції за блоками. Тобто ті рядки які розташовані на одному рівні вкладеності (мають однакові відступи) вважаються єдиним блоком операторів. Тому у Python правильні відступи є дуже важливими. Сподіваюся, вам подобаються правила узгоджених з блоками коду відступів, чи не так? Зверни увагу на те що інструкція if містить в кінці двокрапку — таким чином ми кажемо інтерпретатору, що далі буде йти блок інструкцій. Потім перевіряємо чи змінна guess менша за число від користувача, і якщо так, то ми інформуємо його що потрібне число дещо більше. Загальна форма if…else Згідно синтаксису мови Python спершу записується частина if з умовним виразом. Після умовного виразу ставиться двокрапка. Перед двокрапкою пробіл не ставиться. Далі може бути скільки завгодно НЕОБОВ'ЯЗКОВИХ частин elif зі своїми умовними виразами, і в кінці може стояти, теж необов’язкова частина else. Блок else виконується тоді, коли жодна попередня умова не є істинною. Умовні інструкції і частина else мають асоційовані з ними блоки вкладених інструкцій, з відступом відносно основної інструкцї.
Повертаємося до "Byte of Python" if someExpression: if anotherExpression: if andAnoteher: if andOneMore: print('Всі попередні умови повернули істинно')
Запам’ятай, що мінімально достатньою формою конструкції if є така:
Зауваження для програмістів на C/C++ Керуюча конструкція while (цикл з передумовою) Даний цикл дозволяє багаторазово виконувати блок виразів. Циклом з передумовою він називається тому, що умова перевіряється на істинність ДО початку виконання тіла циклу, отже, воно може жодного разу не виконатися. Асоційований блок коду буде виконуватися доти, доки умовний вираз повертає істинно (true) . Як і if конструкція while теж має необов’язкову інструкцію else. Розглянемо приклад: #!/usr/bin/python # Filename: while.py number = 23 running = True while running: guess = int(input('Введи число : ')) if guess == number: print('Вітаю, ти його вгадав.') running = False#тут цикл зупиниться elif guess < number: print('Ні, воно трохи більше за це.') else: print('Ні, воно трохи менше за це.') else: print('Цикл while закінчив роботу.') print('Програму виконано')
Виведе: Як це працює В цій програмі ми все ще граємо у гру "вгадай число", але ця програма має велику перевагу — користувач може вгадувати доти доки не вгадає число і при цьому програма не завершує роботу. Йому не потрібно заново запускати програму кожного разу коли число невірне. Ми перемістили if та input всередину циклу while і надали змінній running значення істинно ПЕРЕД циклом while. Спершу ми перевіряємо чи змінна running дорівнює True і потім виконуємо відповідний блок while. Після того як блок інструкцій while виконано, знову перевіряється умова. Якщо умова повертає True, ми виконуємо блок while знову, в протилежному випадку переходимо до опціонального виразу else (це до того де міститься код print('Цикл while закінчив роботу.').) циклу while а потім далі, до кінця програми. Блок else циклу while виконується тоді, коли умова циклу набуває значення False — це може статися навіть при першій перевірці умови. Якщо присутня інструкція else, то вона завжди буде виконана, якщо ти не перервеш цикл (не вийдеш із циклу) за допомогою інструкції break. True і False називаються Булевими типами даних і ти можеш вважати їх еквівалентами числам 1 і 0 відповідно. Цикл for Інструкція for…in це інший вид циклу який є універсальним ітератором послідовностей об’єктів, іншими словами в даному циклі відбувається обхід елементів всередині послідовності. Ми дізнаємося більше про послідовності в наступних статтях. Що тобі потрібно знати зараз так це те, що послідовність це просто впорядкована колекція (впорядкований набір) елементів. Приклад: Виведе:
1
2
3
4
The for loop is over Як це працює: Далі цикл for проводить ітерацію через цю послідовність (здійснює перебір послідовності) — for i in range(1,5) еквівалентно i in [1, 2, 3, 4]. Це ніби привласнення кожного числа (об’єкта) в послідовності змінній i, одне число за раз; потім виконується блок операторів для кожного значення змінної i (змінній i було присвоєно число, над ним виконується певний код, по заверешенні цього коду змінній привласнюється наступне число і над ним теж виконується код, і так до кінця послідовнсості). Запам’ятай що цикл for…in працює для будь-якої послідовності. Даний цикл може бути вкладеним: items = ["ааа", 111, D, 5), 2.01] #множина об’єктів tests = [D, 5), 3.14]#ключі які треба відшукати for key in tests: for item in items: if item == key print(key, "was found") Зауваження для програмістів на C/C++/Java/C#
Інструкція break Важливе зауваження: якщо ти примусово завершуєш цикл for чи while відповідний блок else не буде виконано. Приклад: #!/usr/bin/python # Filename: break.py while True: s = (input('Введи щось : ')) if s == 'quit': break print('Довжина рядка', len(s)) print('Готово')
Виведе: $ python break.py Як це працює: В цій програмі ми багаторазово приймали від користувача дані і виводили на екран довжину кожного рядка який ввів користувач. В програмі є спеціальна умова, в разі виконання якої цикл примусово завершується інструкцією break. Довжина рядка (к-ть символів в ньому) з’ясовується використовуючи функцію len. Інструкція break може бути використана і в циклі for.
Інструкція continue Приклад: #!/usr/bin/python # Filename: continue.py while True: s = input('Enter something : ') if s == 'quit': break if len(s) < 3: print('Too small') continue print('Input is of sufficient length') Виведе: Як це працює: В цій програмі ми приймаємо дані від користувача, але ми опрацьовуємо їх тільки тоді, коли вони мають довжину принаймні 3 символи. Отже, ми користуємося функцією len для визначення довжини і якщо довжина менша за три символи, ми пропускаємо решту інструкцій в блоці користуючись інструкцією continue. В протилежному випадку решта інструкцій в циклі виконуються. Як і break інструкція continue може використовуватися з циклом for.
Підсумок Ми побачили як користуватися умовною інструкцією if, двома видами циклів і інструкціями break та continue. Це найбільш часто використовувана частина Python, тому дуже важливо це все добре вивчити. Далі ми побачимо як створювати і користуватися функціями.
Переклад з книги - Byte of Python Автор перекладу - Дмитро Юрченко ( 5 Проголосувало ) Новіші матеріали:
Старіші матеріали:
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |