Як нам перевірити, що гравець побив свою рекордну кількість очок? Як нам перевірити, що у нього більше немає життєвих очок? Як нам перевірити, що у нього є ключ для того, щоб відкрити двері?
Відео: введення в умовний операторif
Оператор if- то, що нам потрібно. Ifтакож відомий як умовний оператор . (Ви можете використовувати словосполучення "умовний оператор", коли захочете здивувати всіх своїм розумом.) IfДозволяє комп'ютеру прийняти рішення. Чи тепло зовні? Чи досяг космічний корабель межі екрану? Чи було виведено з рахунку занадто багато грошей? Програма може перевіряти ці умови за допомогою оператора if.
Ось кілька прикладів використання оператора if. Перша частина встановлює три змінні (a, b і c) для використання в операторі if. Потім, дві умови з if показують, як порівняти змінні, щоб побачити, яка з них більше.
Step |
змінні: a = 4 b = 5 висновок: a менше b Готово |
У зв'язку з тим, що a менше b, при запуску програми спрацює тільки висновок даних під першою умовою. Якби обидві змінні, a і b, були рівні 4, то жодне з вищенаведених умов ifне спрацювало. Цифра 4 не більш 4, так що оператор ifне спрацює.
Наступний приклад показує, що використовувати для перевірки, чи є величина більшою, або рівною заданому значенню:
Приклад виразів if: менше або дорівнює, більше або дорівнює |
|
1 2 3 4 5 |
if a <= b: print ( "a менше або дорівнює b") if a> = b:< print ( "a більше або дорівнює b") |
Символи <=і >=повинні бути використані в цьому порядку і між ними не повинно бути пробілу. Наприклад =<не спрацює, як не спрацює і < =.
Коли такі вирази пишуться в зошитах, на контрольних, учні люблять використовувати символ ≤ Наприклад:
# Это не работает if a ≤ b: print("a меньше либо равно b") |
Як стверджує коментар, цей символ не працює в програмі. Плюс, більшість людей не знають, як легко набрати його на клавіатурі. (Затисніть клавішу 'alt' і наберіть цифри 243 на додатковій цифровій клавіатурі.) Так що, коли пишете код, пам'ятайте використовувати <=, а не ≤.
Example if statements: equal not equal |
|
1 2 3 4 5 6 7 |
# Рівність if a==b: print("a рівно b")
# Нерівність if a != b: print("a не дорівнює b") |
Увага! Часта помилка.
Дуже легко сплутати ==і =. Використовуйте ==якщо ви перевіряєте значення на рівність. Чи використовуєте = в разі надання значення змінної.
Дві найбільш часті помилки з операторами =і == показані знизу:
1 2 3 4 5 6 |
# Это не правильно a==1
# Це теж неправильно if a=1: print("A дорівнює 1") |
Стоп! Перечитайте ще раз вищенаведений приклад коду. Збережіть свій час, розібравшись, коли потрібно використовувати =і ==. Чи не намагайтеся просто вгадувати.
Відступи важливі. Кожна зрушена рядок під виразом if буде виконана тільки якщо сам вираз if є істинним:
1 2 3 4 5 6 |
if a==1: print("Если a равно единице, то выведется эта строка.") print("А также эта.") print("И эта.")
print("Эта строка всегда будет выводиться на экран.") |
Відступи повинні бути однаковими. Наступний код не працює:
1 2 3 4 |
if a==1: print("Отступ в два пробела.") print("Отступ в четыре. Покажется ошибка.") print("Компьютер пожелает, чтобы всё было ясно.") |
Коли вираз if було виконано, а потім були використані рядки коду без відступу, неможливо знову зробити відступ і повернутися до нього. Перевірка повинна бути виконана ще раз.
1 2 3 4 5 6 |
if a==1: print("Если a равно единице, то это выведется на экран.") print("Как и это.")
print("Это всегда будет выводиться на экран.") print("Покажется ошибка. Для чего был предназначен этот отступ?") |
Оператор if може перевіряти кілька умов, пов'язуючи їх разом за допомогою операторів and( "і") і or( "або").
Приклади виразів if, використання "and" і "or" |
|
1 2 3 4 5 6 7 |
# And, и, оба условия должны выполняться if a < b and a < c: print("a меньше, чем b и c")
# Or, или, достаточно выполнения одного из условий if a < b or a < c: print("a меньше, чем a или c (или оба)") |
Будь ласка, повторювати себе.
Часта помилка - не використання повторно імені змінної при перевірці кількох умов. Нижченаведений код не працює, тому що комп'ютер не знає, що робити зі змінною cі що з нею порівнювати. Він не здогадається, що потрібно порівняти її з a.
1 2 3 |
# Это не верно if a < b or < c: print("a меньше, чем b и c") |
Python підтримує булеві змінні. Що таке булеві змінні? Булеві змінні можуть зберігати в собі значення True( "Вірно") або False( "Помилково"). Булева алгебра була розроблена Джорджем Булем в 1854 році. Якби він тільки міг уявити, наскільки важливим його робота проявить себе, ставши основою соверменной комп'ютерної логіки!
Оператор ifвимагає вираження для оцінки, True(Вірне) воно або False(Хибне). Що може здатися дивним, так це те, що не потрібно ніяких порівнянь якщо у змінної вже є значення Trueабо False.
Оператор If і тип даних Boolean |
|
1 2 3 4 |
# Булевый тип данных. Это выражение корректно! a=True if a: print("a is true") |
Коли я вчився в школі, було прийнято робити неправдиві заяви. А потім, почекавши три секунди, крикнути "НІ!" Ну, навіть ваш комп'ютер думає, що це нерозумно. Якщо ви збираєтеся це робити, то потрібно застосувати функцію not(). Наступний код використовує функцію not() для зміни значення aміж істинним і хибним.
Оператор If і тип даних Boolean |
|
1 2 3 |
# Как использовать функцию not if not(a): print("a - ложно") |
Можливо використовувати змінні типу Boolean разом з операторами andі or.
Оператор If і тип даних Boolean |
|
1 2 3 4 5 |
a=True b=False
if a and b: print("Оба a и b являются верными") |
Хто знав, що True / False можуть бути складними?
Можливо також привласнювати змінної результат порівняння. У нижчеподаному коді, порівнюються змінні aі b. Якщо вони рівні, cбуде дорівнює True, в іншому випадку cбуде False.
Присвоєння значень типу Boolean |
|
1 2 3 4 5 6 7 8 |
a=3 b=3 # Следующая строка кода выглядит странно, но она корректна. # c будет равен True или False, в зависимости от равенства # a и b. c = a == b # Выводит значение c, в данном случае True print(c) |
0 означає False. Все інше - True.
Можливо створити вираз ifдля умови, що не дорівнює True або False. Зазвичай, це не є кращим, але нам важливо зрозуміти, як комп'ютер звертається з подібними змінними під час пошуку проблем. Наступні вирази коректні, і в підсумку кожен рядок буде надрукована, бо значення всередині виразу ifне є рівними нулю:
1 2 3 4 |
if 1: print("1") if "A": print("A") |
Нижченаведений код нічого не виведе, тому що значення в вираженні if дорівнює нулю, що розцінюється комп'ютером як False. Будь-яке інше значення розцінюється як True.
1 2 |
if 0: print("Ноль") |
У нижчеподаному коді, перший ifздається працюючим. Проблема в тому, що він завжди буде вважатися дійсним, навіть якщо змінна aНе рівняється b. Це тому, що bсам по собі вважається дійсним.
1 2 3 4 5 6 7 |
a="c" if a=="B" or "b": print("a равно b. Возможно.")
# Это лучший метод написания выражения if. if a=="B" or a=="b": print("a равняется b.") |
Нижченаведений код візьме температуру, введену користувачем, і скаже, жарко зараз.
1 2 3 4 |
temperature=int(input("Какова температура по Фаренгейту? ")) if temperature > 90: print("Снаружи жарко") print("Готово") |
Якщо програміст хоче, щоб якийсь код був виконаний, навіть якщо зовні гаряче, він повинен використовувати оператор else( "Інакше"). Зауважте, як elseзнаходиться на тому ж рівні, що і iз виразу з ifі як за ним слідує двокрапка, подібно до того, як це відбувається в вираженні if.
У разі використання if...elseодин з блоків коду завжди буде виконаний. Перший блок буде виконаний, якщо вираз всередині if дорівнюватиме True, другий же блок коду буде виконаний в разі, якщо вираз дорівнює False.
Приклад використання if / else |
|
1 2 3 4 5 6 |
temperature=int(input("Какова температура по Фаренгейту? ")) if temperature > 90: print("Снаружи жарко") else: print("Снаружи нежарко") print("Готово") |
Можливо поставити кілька операторів ifпоспіль, використовуючи вираз else...if. Python скорочує його як elif.
Приклад використання if / elif / else |
|
1 2 3 4 5 6 7 8 |
temperature=int(input("Какова температура по Фаренгейту? ")) if temperature > 90: print("Снаружи жарко") elif temperature < 30: print("Снаружи холодно") else: print("Снаружи нежарко") print("Готово") |
Відео: логічний порядок в виразах if
У нижчеподаному коді, програма виведе "Зовні жарко", навіть якщо користувач введе 120 градусів. Чому? Як можна виправити цей код?
Якщо ви не можете розібратися, подивіться відео.
Приклад неправильного порядку if / elif / else |
|
1 2 3 4 5 6 7 8 9 10 |
temperature=int(input("Какова температура по Фаренгейту? ")) if temperature > 90: print("Снаружи жарко") elif temperature > 110: print("О Боже, кажется на асфальте можно жарить омлет!") elif temperature < 30: print("Снаружи холодно") else: print("Снаружи неплохо") print("Готово") |
Можливо використовувати вираз ifдля перевірки тексту. (Цей приклад працювати не буде, якщо ви використовуєте Eclipse, а не рекомендовану середу IDLE, тому що введення містить в собі зайвий перенесення рядка в кінці.)
Порівняння тексту, беручи до уваги регістр |
|
1 2 3 4 5 |
userName = input("Как тебя зовут? ") if userName == "Paul": print("У тебя отличное имя.") else: print("У тебя неплохое имя.") |
Попередній приклад спрацює, тільки якщо було введено ім'я "Paul". Він не спрацює, якщо користувач введе "paul" або "PAUL".
Часта помилка - забути лапки навколо порівнюваних рядків. У нижчеподаному прикладі, комп'ютер подумає, що Paul- змінна, яка зберігає значення. Він відзначить це як помилку, тому що він не знає, що ж насправді зберігатися в змінної Paul.
Incorrect comparison |
|
1 2 3 4 5 |
userName = input("Как тебя зовут? ") if userName == Paul: # Это не работает, потому что не поставлены кавычки print("У тебя отличное имя.") else: print("У тебя неплохое имя.") |
Коли порівнюєте змінну з різними рядками тексту, важливо пам'ятати, що порівняння повинно включати саму змінну. наприклад:
# Это не работает! Всегда будет считаться как True if userName== "Paul" or "Mary": |
Замість цього, слід використовувати код:
# Это работает if userName == "Paul" or userName == "Mary": |
Це тому, що будь-яке значення, крім нуля, сприймається комп'ютером як True. Так що для комп'ютера "Mary"- те ж саме, що і True. Тому він запустить код, що знаходиться всередині виразу if.
Якщо програмі треба порівняти рядок незалежно від того, була введена вона великими або маленькими літерами, найлегше перетворити кожну букву рядка в малу (маленьку). Це може бути зроблено за допомогою команди lower.
Нижченаведений приклад візьме будь-який введення користувача, перетворить його букви в маленькі, а потім проведе порівняння. Важливо: не порівнюйте її з рядком, в якій є великі літери. Якщо введення користувача перероблений в маленькі букви, тоді порівнюючи його з великими літерами, ніколи не буде отримано результат True.
Case-insensitive text comparison |
|
1 2 3 4 5 |
userName = input("Как тебя зовут? ") if userName.lower() == "paul": print("У тебя отличное имя.") else: print("У тебя неплохое имя.") |
Наступний набір коду покаже всі принципи, обумовлені раніше. Відео проходить по кожному рядку коду і пояснює її.
Відео: Приклади використання if
if_statement_examples.py |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
# Sample Python/Pygame Programs # Simpson College Computer Science # http://programarcadegames.com/ # http://simpson.edu/computer-science/
# Explanation video: http://youtu.be/pDpNSck2aXQ
# Variables used in the example if statements a = 4 b = 5 c = 6
# Basic comparisons if a < b: print("a is less than b")
if a > b: print("a is greater than than b")
if a <= b: print("a is less than or equal to b")
if a >= b: print("a is greater than or equal to b")
# NOTE: It is very easy to mix when to use == and =. # Use == if you are asking if they are equal, use = # if you are assigning a value. if a == b: print("a is equal to b")
# Not equal if a != b: print("a and b are not equal")
# And if a < b and a < c: print("a is less than b and c")
# Non-exclusive or if a < b or a < c: print("a is less than either b or c (or both)")
# Boolean data type. This is legal! a = True if a: print("a is true")
if not a: print("a is false")
a = True b = False
if a and b: print("a and b are both true")
a = 3 b = 3 c = a == b print(c)
# These are also legal and will trigger as being true because # the values are not zero: if 1: print("1") if "A": print("A")
# This will not trigger as true because it is zero. if 0: print("Zero")
# Comparing variables to multiple values. # The first if statement appears to work, but it will always # trigger as true even if the variable a is not equal to b. # This is because "b" by itself is considered true. a = "c" if a == "B" or "b": print("a is equal to b. Maybe.")
# This is the proper way to do the if statement. if a == "B" or a == "b": print("a is equal to b.")
# Example 1: If statement temperature = int(input("What is the temperature in Fahrenheit? ")) if temperature > 90: print("It is hot outside") print("Done")
# Example 2: Else statement temperature = int(input("What is the temperature in Fahrenheit? ")) if temperature > 90: print("It is hot outside") else: print("It is not hot outside") print("Done")
# Example 3: Else if statement temperature = int(input("What is the temperature in Fahrenheit? ")) if temperature > 90: print("It is hot outside") elif temperature < 30: print("It is cold outside") else: print("It is not hot outside") print("Done")
# Example 4: Ordering of statements # Something with this is wrong. What? temperature = int(input("What is the temperature in Fahrenheit? ")) if temperature > 90: print("It is hot outside") elif temperature > 110: print("Oh man, you could fry eggs on the pavement!") elif temperature < 30: print("It is cold outside") else: print("It is ok outside") print("Done")
# Comparisons using string/text # Note, this example does not work when running under Eclipse # because the input will contain an extra carriage return at the # end. It works fine under IDLE. userName = input("What is your name? ") if userName == "Paul": print("You have a nice name.") else: print("Your name is ok.")
|