McBin

Логика: Искусство принятия решений | Урок 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 — это закон. Нет отступа — нет вложенности.

**Твое домашнее задание:** Попробуй написать программу-бота, который спрашивает у пользователя погоду. Если «дождь» — советует зонт, если «солнце» — очки, а если что-то другое — желает хорошего дня.

Удачи в коде! 🚀
Copied to clipboard!