edubun
Русский

Принятие решений с 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 == 5True
!=не равно5 != 5False
<меньше3 < 7True
<=меньше или равно7 <= 7True
>больше3 > 7False
>=больше или равно18 >= 19False

Обрати внимание на двойной знак равенства. Один = присваивает значение, два == сравнивают. Строки тоже можно сравнивать: "kimchi" == "Kimchi" даёт False, ведь заглавные буквы считаются другими символами.

Порядок строк elif меняет ответ

Python останавливается на первом условии True, поэтому порядок ветвей важен. Классический пример: выставление оценки по баллам. Сначала проверь 90 и выше, затем 80, затем 70. Если поставить проверку 70 первой, балл 95 попадёт в неё и получит C, ведь 95 >= 70 тоже даёт True.

Цепочка if/elif/else похожа на лестницу. Python спускается, пока не встретит условие True, выполняет эту ветвь и перескакивает через остальные.
score = 95
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(grade)
Вывод
A

and, 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Оба истинны / хотя бы одно истинно / противоположное
отступЧетыре пробела, отмечающие строки внутри ветви
  1. Что выведет этот код?
    x = 8
    if x > 5:
        print("big")
    else:
        print("small")
  2. Что выведет этот код?
    age = 7
    if age < 7:
        print("free")
    elif age <= 18:
        print("3000")
    else:
        print("5000")
  3. Что выведет этот код?
    score = 85
    if score >= 70:
        print("C")
    elif score >= 80:
        print("B")
  4. Что выведет этот код?
    x = 3
    if x > 5:
        print("A")
    print("B")
    • A
      B
    • B
    • A
    • (nothing)
  5. Что выведет этот код?
    print(5 == 5.0, "a" == "A")
  6. Что выведет этот код?
    t = 30
    print(t > 25 and t < 28)
  7. Что выведет этот код?
    rain = False
    print(not rain)
  8. Что выведет этот код?
    n = 14
    if n % 2 == 0:
        if n > 10:
            print("big even")
        else:
            print("small even")
    else:
        print("odd")
  9. Какая строка верно проверяет, равно ли x числу 10?
    • if x = 10:
    • if x == 10:
    • if x == 10
    • if (x = 10)
  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.
Заметка для учителяНачать с кассы удобно: ученики уже знают, как принимается решение, а нового здесь только его запись. Попроси их проговорить правило по порядку до набора кода. Программу выставления оценок с неверным порядком стоит запустить намеренно: она выдаёт C за 85 баллов без сообщения об ошибке. Это первое знакомство с логической ошибкой. При проверке используй граничные значения (6, 7, 18, 19 для билетов): именно там скрываются ошибки выбора между < и <=. В корейской школьной программе по информатике есть стандарт по логическим операциям и вложенным управляющим конструкциям.
Главное
  • 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