Принятие решений с if
Python проверяет if и каждый elif сверху вниз и выполняет только первую ветвь с условием True; остальные пропускаются.
Цена билета зависит от возраста
Попробуй решить задачу до знакомства с новым синтаксисом. Небольшой научный музей, придуманный для этого примера, пускает детей младше 7 лет бесплатно, посетителей от 7 до 18 лет за 3000 вон, остальных за 5000 вон. Программа должна по возрасту вывести цену. Сначала запиши правило обычными словами, как последовательность вопросов, которые ты задал бы у кассы.
Наверняка получилось примерно так: посетитель младше 7 лет? Если да, бесплатно, и на этом всё. Если нет, ему 18 лет или меньше? Если да, 3000 вон, и всё. Иначе 5000 вон. Это уже программа. Слова «если», «иначе, если» и «иначе» в Python записываются как if, elif и else.
age = 12
if age < 7:
price = 0
elif age <= 18:
price = 3000
else:
price = 5000
print(price)3000В синтаксисе важны три детали. Каждая строка с условием заканчивается двоеточием. Строки внутри ветви пишут с отступом; учебник Python рекомендует четыре пробела. Когда отступ заканчивается, заканчивается и ветвь, поэтому print(price) выполняется при любом возрасте. Выполняется лишь одна ветвь: для возраста 12 первое условие равно False, второе True, поэтому price становится 3000, а else даже не рассматривается.
Сравнения дают True или False
| Оператор | Значение | Пример | Результат |
|---|---|---|---|
| == | равно | 5 == 5 | True |
| != | не равно | 5 != 5 | False |
| < | меньше | 3 < 7 | True |
| <= | меньше или равно | 7 <= 7 | True |
| > | больше | 3 > 7 | False |
| >= | больше или равно | 18 >= 19 | False |
Обрати внимание на двойной знак равенства. Один = присваивает значение, два == сравнивают. Строки тоже можно сравнивать: "kimchi" == "Kimchi" даёт False, ведь заглавные буквы считаются другими символами.
Порядок строк elif меняет ответ
Python останавливается на первом условии True, поэтому порядок ветвей важен. Классический пример: выставление оценки по баллам. Сначала проверь 90 и выше, затем 80, затем 70. Если поставить проверку 70 первой, балл 95 попадёт в неё и получит C, ведь 95 >= 70 тоже даёт True.
score = 95
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
print(grade)Aand, or, not объединяют условия
and даёт True, только когда обе стороны равны True. or даёт True, когда хотя бы одна сторона равна True. not меняет True на False и наоборот. Условие «от 13 до 18» можно записать как age >= 13 and age <= 18 или короче, в стиле Python: 13 <= age <= 18. Условие может находиться внутри другой ветви; это называют вложенностью. Логические операции и вложенные управляющие конструкции упоминаются вместе в одном из стандартов корейской школьной программы по информатике.
age = 15
has_ticket = True
if 13 <= age <= 18 and has_ticket:
print("Teen entry")
if not has_ticket or age < 7:
print("See the desk")
else:
print("Go in")Teen entry
Go in| if | Выполняет строки с отступом, только если условие равно True |
| elif | «Иначе, если»: проверяется, только если все предыдущие условия были False |
| else | Выполняется, если ни одно предыдущее условие не было True |
| == | Сравнивает два значения; = присваивает |
| and / or / not | Оба истинны / хотя бы одно истинно / противоположное |
| отступ | Четыре пробела, отмечающие строки внутри ветви |
- Что выведет этот код?
x = 8 if x > 5: print("big") else: print("small") - Что выведет этот код?
age = 7 if age < 7: print("free") elif age <= 18: print("3000") else: print("5000") - Что выведет этот код?
score = 85 if score >= 70: print("C") elif score >= 80: print("B") - Что выведет этот код?
x = 3 if x > 5: print("A") print("B")A
BBA(nothing)
- Что выведет этот код?
print(5 == 5.0, "a" == "A") - Что выведет этот код?
t = 30 print(t > 25 and t < 28) - Что выведет этот код?
rain = False print(not rain) - Что выведет этот код?
n = 14 if n % 2 == 0: if n > 10: print("big even") else: print("small even") else: print("odd") - Какая строка верно проверяет, равно ли x числу 10?
- if x = 10:
- if x == 10:
- if x == 10
- if (x = 10)
- Расположи строки по порядку, чтобы программа вывела "Even".Вывод
Even
- «if score = 90: проверяет, равно ли score числу 90». Один = означает присваивание. Python выдаёт SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? Напиши if score == 90:.
- «if answer == "yes" or "y": принимает оба ответа». Python читает это как (answer == "yes") or ("y"), а непустая строка "y" считается истинной, поэтому условие всегда истинно. Напиши answer == "yes" or answer == "y".
- «Отступ нужен только для красоты». В Python от него зависит принадлежность строк к ветви. Без него программа останавливается с IndentationError: expected an indented block after 'if' statement on line 2.
- if / elif / else: выполняется только первая ветвь с условием True.
- Строки с условиями заканчиваются на :, внутри ветви отступ в четыре пробела.
- == сравнивает; = присваивает.
- В цепочке elif ставь самое строгое условие первым.
- and, or и not объединяют условия.
Источники курса (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Проверено: 2026-10-19