Логика: Искусство принятия решений | Урок 3
Вот учебный материал, адаптированный для ученика 9 класса. В нём мы перейдем от простого калькулятора к созданию «умных» программ.
***
# УРОК: Логика — Искусство принятия решений в Python
Привет! До этого момента наши программы были похожи на очень быстрые калькуляторы: они складывали, вычитали и выводили текст. Но чего-то не хватало, верно? Они были **линейными**. Они просто выполняли команды сверху вниз, не задумываясь.
Сегодня мы добавим в код «мозги». Мы научим программу **принимать решения**.
Представь свою любимую видеоигру.
* *Если* здоровье персонажа падает до 0, *то* игра заканчивается (Game Over).
* *Иначе*, игра продолжается.
Без логики (условий) игры бы не существовало. Без неё не работал бы вход в Instagram (пароль верный?), не летали бы автопилоты Tesla (вижу пешехода — торможу) и не работали бы рекомендации в TikTok.
Сегодня мы разберем три кита, на которых держится вся логика программирования: тип данных **bool**, **операторы сравнения** и конструкцию **if-else**.
---
## Часть 1: Истина или Ложь? (Тип данных `bool`)
В жизни на вопрос «Ты сделал домашку?» можно ответить уклончиво: «Ну, почти», «Скоро начну», «Сложно сказать».
В программировании такой роскоши нет. Компьютер понимает только конкретику.
В Python есть специальный тип данных, который называется **Boolean** (булевый). У него всего два возможных значения:
1. **True** (Истина / Да / Включено)
2. **False** (Ложь / Нет / Выключено)
> **Важно:** В Python мы пишем их с большой буквы: `True` и `False`. Если напишешь `true`, программа выдаст ошибку.
Представь это как выключатель света. Он либо включен, либо выключен. Третьего не дано.
---
## Часть 2: Операторы сравнения (Детекторы правды)
Откуда берутся `True` и `False`? Обычно они появляются в результате **сравнения**. Для этого мы используем операторы сравнения. Большинство из них ты знаешь с уроков математики начальной школы.
Вот список инструментов, которые тебе понадобятся:
* `>` (Больше): `5 > 3` → **True**
* `<` (Меньше): `2 < 8` → **True**
* `>=` (Больше или равно): `10 >= 10` → **True**
* `<=` (Меньше или равно): `7 <= 6` → **False**
* `!=` (Не равно): `5 != 5` → **False** (потому что они равны!)
* `==` (Равно): `10 == 10` → **True**
### 🛑 Осторожно: Самая частая ошибка новичка!
Обрати внимание на двойное равно `==`.
* Одиночное `=` — это **присваивание**. (Мы говорим переменной: «Теперь ты хранишь это значение»).
* `x = 5` (В коробку `x` положили число 5).
* Двойное `==` — это **сравнение**. (Мы спрашиваем: «Эй, эти штуки равны?»).
* `x == 5` (Правда ли, что в коробке `x` лежит 5?).
**Пример в коде:**
```python
age = 15 # Присвоили значение
is_adult = age >= 18 # Спросили: "Возраст больше или равен 18?"
print(is_adult) # Выведет: False (потому что 15 не больше 18)
```
---
## Часть 3: Конструкция `if-else` (Развилка на дороге)
Теперь, когда мы умеем получать True и False, давайте научим программу действовать по-разному в зависимости от ситуации. Для этого используется конструкция **if-else** (если-иначе).
Представь, что ты фейсконтрольщик в клубе.
1. **Если (`if`)** человеку есть 18 лет — пропускаем.
2. **Иначе (`else`)** — отправляем домой пить чай.
В Python это выглядит так:
```python
age = int(input("Сколько вам лет? "))
if age >= 18:
print("Добро пожаловать в клуб!")
print("Вот ваше меню.")
else:
print("Извините, вход только для взрослых.")
print("Приходите, когда подрастете.")
```
### 🔍 Разбор синтаксиса (Очень важно!):
1. **Двоеточие (`:`):** После условия `if` и после `else` обязательно ставится двоеточие. Это как сказать программе: «Слушай, что делать дальше...».
2. **Отступы (Indentation):** Обрати внимание, что `print` сдвинут вправо (обычно на 4 пробела или 1 Tab).
* В Python отступы определяют, какие команды относятся к `if`, а какие — нет.
* Всё, что с отступом — это «внутренности» условия.
### А если вариантов больше двух? (`elif`)
Что, если нам нужно не просто «Да/Нет», а сложный выбор? Например, выбор персонажа в игре: Воин, Маг или Лучник.
Для этого есть **`elif`** (сокращение от *else if* — «иначе если»).
```python
role = input("Выберите класс (воин/маг): ")
if role == "воин":
print("Вы взяли меч. Сила +10.")
elif role == "маг":
print("Вы взяли посох. Мана +50.")
else:
print("Вы выбрали что-то странное. Теперь вы — крестьянин.")
```
Программа проверяет условия сверху вниз. Как только она находит первое `True`, она выполняет этот блок и **пропускает** остальные.
---
## Практические примеры из жизни
Давай напишем код, который решает реальные задачи.
### Пример 1: Система скидок в магазине
Представь, что ты пишешь кассовую программу для магазина кроссовок. Если клиент покупает на сумму больше 5000 рублей, он получает скидку 10%.
```python
price = float(input("Сумма покупки: "))
if price > 5000:
discount = price * 0.10 # Считаем 10%
final_price = price - discount
print(f"Поздравляем! Ваша скидка: {discount} руб.")
else:
final_price = price
print("Купите еще что-нибудь для скидки!")
print(f"К оплате: {final_price} руб.")
```
*Обрати внимание: последняя строка сработает в любом случае, потому что она написана без отступа.*
### Пример 2: Проверка пароля (Кибербезопасность на минималках)
Простейшая система защиты данных.
```python
secret_pass = "PythonTop2024"
user_input = input("Введите пароль для доступа к серверу: ")
if user_input == secret_pass:
print("Доступ разрешен! Загрузка данных...")
# Тут мог бы быть код запуска ракеты или открытия сейфа
else:
print("ОШИБКА: Неверный пароль!")
print("Служба безопасности уже выехала.")
```
---
## 🧠 Это интересно: Факты о логике
1. **Почему `bool`?** Этот тип данных назван в честь **Джорджа Буля**, математика XIX века. Он придумал алгебру логики задолго до появления компьютеров. Тогда никто не понимал, зачем это нужно, а сейчас на его идеях работает каждый смартфон в мире.
2. **True — это число.** Для компьютера `True` — это на самом деле единица (`1`), а `False` — это ноль (`0`). Вы можете даже сложить их: `True + True` в Python выдаст `2`. (Но лучше так не делайте в серьезном коде, коллеги не поймут!).
3. **Космическая ошибка.** В 1962 году ракета «Маринер-1», летевшая к Венере, взорвалась через несколько минут после старта. Одной из причин (по легенде) была пропущенная черточка над символом в формуле, что привело к логической ошибке в программе управления. Логика не прощает небрежности!
---
## Ключевые моменты (Запомни это!)
* **Тип `bool`** — это только `True` или `False`.
* **Операторы сравнения** (`>`, `<`, `==`, `!=`) превращают числа и строки в `bool`.
* **`=`** — это положить в коробку (присвоить), **`==`** — это сравнить содержимое.
* **`if`** проверяет условие. Если оно верно — код выполняется.
* **`else`** — это план «Б», если условие `if` оказалось ложным.
* **Отступы** в Python — это закон. Нет отступа — нет вложенности.
**Твое домашнее задание:** Попробуй написать программу-бота, который спрашивает у пользователя погоду. Если «дождь» — советует зонт, если «солнце» — очки, а если что-то другое — желает хорошего дня.
Удачи в коде! 🚀