ТЕОРИЯ И ПРАКТИКА

  • Ввод и вывод данных
    • Задачи
  • Условия
    • Задачи
  • Цикл for
    • Задачи
  • Строки
    • Задачи
  • Цикл while
    • Задачи
  • Списки
    • Задачи
  • Двумерные массивы
    • Задачи
  • Словари
    • Задачи
  • Множества
    • Задачи
  • Функции и рекурсия
    • Задачи

Занятие 2. Условия в питоне

1. Условные операторы Python: основы работы

Представьте, что программа — это ваш помощник, который может принимать решения. Но чтобы он их принимал, вы должны дать ему четкие инструкции-условия. "Если пойдет дождь, возьми зонт". "Если голоден, приготовь еду". Условные операторы — это и есть способ научить программу принимать такие решения.

Условие в Python: логика и сравнение

В основе любого решения лежит вопрос, на который можно ответить "Да" (True) или "Нет" (False). В программировании это называется логическим выражением или условием. Компьютер постоянно вычисляет такие условия. Например, 5 > 3 — это правда (True), а 10 == 1 — это ложь (False). Вся работа условных операторов строится на проверке истинности таких выражений.

Синтаксис оператора if: условия в Python

Самый главный и простой условный оператор — это if (в переводе "если"). Его структура очень проста и логична.

Синтаксис: if [условие] :     [блок кода, который выполнится, если условие истинно]

Ключевые моменты здесь — это двоеточие (:) после условия и обязательный отступ для блока кода под ним (обычно 4 пробела). Отступ показывает Python, какие именно строки кода относятся к этому условию.

2. Оператор if: условный оператор Python

Давайте углубимся в работу if. Этот оператор является отправной точкой для любой логики ветвления в вашем коде.

Условие в Python: работа с логикой

Условие, которое вы ставите после if, должно в итоге давать либо True, либо False. Это может быть результат сравнения чисел, проверки строки или значение логической переменной.

is_raining = True
if is_raining:
    print("Не забудьте взять зонт!")
                        

Примеры использования if

Рассмотрим простой пример. Проверим, является ли число положительным.

temperature = 15

# Проверяем, что температура выше нуля
if temperature > 0:
    print("На улице плюс.")

# Этот код выполнится в любом случае, так как он не имеет отступа
print("Проверка температуры завершена.")
                        

3. Оператор else в Python: условные выражения

Что делать, если условие if оказалось ложным? Для этого существует оператор else (в переводе "иначе").

Назначение else в питоне

Оператор else выполняется только в том случае, если условие в предшествующем if было ложным (False). Он создает вторую ветку выполнения кода: "если условие верно, сделай это, а во всех остальных случаях — сделай то".

Синтаксис: if [условие] :     [блок кода для True] else:     [блок кода для False]

Примеры с else в питоне

Давайте дополним наш пример с температурой.

temperature = -5

if temperature > 0:
    print("На улице плюс.")
else:
    print("На улице мороз или ноль градусов.")
                        

4. Оператор if-elif: логическое условие

Что если у нас не два, а три или больше вариантов развития событий? Например, температура может быть положительной, отрицательной или равной нулю. Использовать множество if неудобно. Для этого есть elif.

Множественные условия в Python

elif — это сокращение от "else if" ("иначе если"). Он позволяет проверить несколько условий поочередно. Python проверяет if, если оно ложно — проверяет первый elif, если и он ложен — следующий elif, и так далее. Как только одно из условий оказывается истинным, его блок кода выполняется, а все остальные elif и else в этой цепочке игнорируются. Так же если в теле условия только одна строка, то вы можете написать ее сразу после двоеточия.

Примеры с elif

temperature = 0

if temperature > 0:
    print("На улице плюс.")
elif temperature < 0:
    print("На улице мороз.")
else:
    print("На улице ровно ноль градусов.")

temperature = 14
if temperature > 0:print("На улице плюс.")
elif temperature < 0:print("На улице мороз.")
else:print("На улице ровно ноль градусов.")

                        

5. Вложенные условия Python: сложные конструкции

Иногда для принятия решения нужно проверить одно условие внутри другого. Это называется вложенностью.

Вложенные условия Python: конструкция и логика

Вы можете поместить один оператор if/elif/else внутрь другого. Главное — правильно соблюдать отступы. Каждый новый уровень вложенности требует дополнительного отступа.

# Представим, что у нас есть логин и возраст пользователя
login = "admin"
age = 20

if login == "admin":
    print("Добро пожаловать, Администратор!")
    # Вложенная проверка возраста
    if age >= 18:
        print("Доступ к панели управления разрешен.")
    else:
        print("Внимание! Администратор слишком молод, доступ ограничен.")
else:
    print(f"Добро пожаловать, {login}!")
                        

Примеры вложенных условий

Рассмотрим пример с покупкой. Скидка дается только VIP-клиентам и только если сумма покупки больше 1000.

is_vip_client = True
purchase_amount = 1200

if is_vip_client:
    print("Клиент имеет статус VIP. Проверяем сумму покупки...")
    if purchase_amount > 1000:
        print("Сумма > 1000. Скидка применена!")
    else:
        print("Сумма недостаточна для скидки VIP.")
else:
    print("Клиент не является VIP. Скидка не применяется.")
                        

6. Логические операторы в условиях

Чтобы создавать более сложные и гибкие условия, используются логические операторы and, or и not.

Оператор and (логическое "И")

Оператор and возвращает True, только если оба условия по бокам от него истинны.

age = 25
has_license = True

# Чтобы водить машину, нужно быть старше 18 И иметь права
if age >= 18 and has_license:
    print("Вы можете водить машину.")
else:
    print("Вы не можете водить машину.")
                        

Оператор or (логическое "ИЛИ")

Оператор or возвращает True, если хотя бы одно из условий истинно.

has_coupon = False
is_sale_day = True

# Скидку дадут, если есть купон ИЛИ сегодня день распродаж
if has_coupon or is_sale_day:
    print("Вы получаете скидку!")
else:
    print("Скидок сегодня нет.")
                        

Оператор not (логическое "НЕ")

Оператор not инвертирует логическое значение: True становится False, а FalseTrue.

is_raining = False

if not is_raining:
    print("Дождя нет, можно идти гулять без зонта.")
                        

Примеры комбинированных условий

Операторы можно комбинировать для создания очень сложных правил.

# Доступ к секретному файлу разрешен админам
# или редакторам, но только если файл не заблокирован
user_role = "editor"
is_file_locked = False

if user_role == "admin" or (user_role == "editor" and not is_file_locked):
    print("Доступ к файлу разрешен.")
else:
    print("Доступ запрещен.")
                        

Обратите внимание на скобки: они работают так же, как в математике, определяя порядок выполнения операций.

7. Операторы сравнения в Python: сравнение значений

Это базовые инструменты для создания условий.

Равенство: ==

Проверяет, равны ли два значения. Важно не путать с = (присваивание).

Неравенство: !=

Проверяет, что два значения не равны.

Больше: >

Проверяет, что значение слева больше значения справа.

Меньше: <

Проверяет, что значение слева меньше значения справа.

Больше или равно: >=

Проверяет, что значение слева больше или равно значению справа.

Меньше или равно: <=

Проверяет, что значение слева меньше или равно значению справа.

Примеры сравнений

a = 10
b = 5

print(f"a == b: {a == b}")   # False
print(f"a != b: {a != b}")   # True
print(f"a > b: {a > b}")     # True
print(f"a < b: {a < b}")     # False
print(f"a >= 10: {a >= 10}") # True
print(f"b <= 5: {b <= 5}")   # True
                        

8. Тернарный оператор (условное выражение)

Это специальный, очень короткий способ записи простой конструкции if-else.

Синтаксис тернарного оператора

Он используется для присваивания значения переменной в зависимости от условия.

Синтаксис: [значение_если_True] if [условие] else [значение_если_False]

Примеры использования

Сравните две записи.

Обычная запись:

age = 22
if age >= 18:
    status = "Совершеннолетний"
else:
    status = "Несовершеннолетний"
print(status)
                        

С использованием тернарного оператора:

age = 22
status = "Совершеннолетний" if age >= 18 else "Несовершеннолетний"
print(status)
                        

Результат тот же, но запись гораздо короче и элегантнее для простых случаев.

9. Особенности и ошибки при работе с условиями

Начинающие часто сталкиваются с одними и теми же ошибками. Давайте их разберем.

Ошибки отступов (IndentationError)

Python очень строг к отступам. Если вы забудете отступ после if: или сделаете его неправильным, вы получите ошибку IndentationError.

Неправильно:

if True:
print("Ошибка!") # Нет отступа
                        

Правильно:

if True:
    print("Все верно!")
                        

Логические ошибки

Это самый коварный тип ошибок. Код работает, не выдает исключений, но результат неправильный. Например, вы перепутали > и >=. Программа не сломается, но для пограничного значения (например, 18 лет) будет работать некорректно. Всегда тщательно проверяйте свою логику.

Ошибки типов данных (TypeError)

Нельзя напрямую сравнивать несовместимые типы, например, строку и число.

age = input("Введите ваш возраст: ") # input() всегда возвращает строку
if age > 18:  # TypeError: '>' not supported between 'str' and 'int'
    print("Ошибка!")
                        

Чтобы это исправить, нужно явно преобразовать тип данных с помощью функций int(), float(), str().

Правильно:

age_str = input("Введите ваш возраст: ")
age_int = int(age_str) # Преобразуем строку в целое число
if age_int >= 18:
    print("Доступ разрешен.")
else:
    print("Доступ запрещен.")
                        

10. Практические примеры

Лучший способ закрепить знания — практика. Вот несколько классических задач.

Проверка числа на четность

Четное число делится на 2 без остатка. В Python для получения остатка от деления используется оператор %.

number = int(input("Введите целое число: "))

if number % 2 == 0:
    print(f"Число {number} - четное.")
else:
    print(f"Число {number} - нечетное.")
                        

Определение оценки по баллам

Идеальная задача для if-elif-else.

score = int(input("Введите ваш балл (от 0 до 100): "))

if score >= 90:
    grade = "A (Отлично)"
elif score >= 75:
    grade = "B (Хорошо)"
elif score >= 60:
    grade = "C (Удовлетворительно)"
elif score >= 40:
    grade = "D (На пересдачу)"
else:
    grade = "F (Неудовлетворительно)"

print(f"Ваша оценка: {grade}")
                        

Калькулятор с выбором операции

num1 = float(input("Введите первое число: "))
op = input("Введите операцию (+, -, *, /): ")
num2 = float(input("Введите второе число: "))

if op == '+':
    result = num1 + num2
elif op == '-':
    result = num1 - num2
elif op == '*':
    result = num1 * num2
elif op == '/':
    if num2 != 0:
        result = num1 / num2
    else:
        result = "Ошибка: деление на ноль!"
else:
    result = "Неверная операция!"

print(f"Результат: {result}")
                        

Проверка логина и пароля

Это упрощенная имитация входа в систему.

# В реальных системах пароли никогда не хранятся в открытом виде!
correct_login = "user123"
correct_password = "password12345"

login = input("Введите логин: ")
password = input("Введите пароль: ")

if login == correct_login and password == correct_password:
    print("Вход выполнен успешно!")
elif login == correct_login:
    print("Неверный пароль.")
else:
    print("Пользователь с таким логином не найден.")