ТЕОРИЯ И ПРАКТИКА
-
Ввод и вывод данных
- Задачи
-
Условия
- Задачи
-
Цикл 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, а False — True.
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("Пользователь с таким логином не найден.")