McBin

Логика: Искусство принятия решений | Урок 3

Вот учебный материал, разработанный специально для ученика 9 класса, который хочет прокачать свои навыки в Python.

***

# УРОК: Логика — Искусство принятия решений
**Тема:** Тип данных bool, операторы сравнения и конструкция if-else.

### Вступление: Зачем компьютеру "мозги"?

Представь, что ты играешь в любимую видеоигру. Ты подходишь к закрытой двери, нажимаешь кнопку "Открыть", но... ничего не происходит. Игра не проверяет, есть ли у тебя ключ. Или представь Instagram, который пускает в твой аккаунт любого человека, даже если он ввел неправильный пароль. Звучит как катастрофа, правда?

До этого момента твои программы были линейными: они выполняли команды одну за другой, как поезд, едущий по прямым рельсам. Но реальная жизнь (и реальное программирование) — это постоянный выбор. Идти налево или направо? Купить скин или копить валюту? Сдал экзамен или завалил?

Сегодня мы научим твою программу **думать** и **принимать решения**. Мы превратим линейный сценарий в разветвленное дерево возможностей.

---

### Часть 1: Истина где-то рядом (Тип данных `bool`)

В жизни на вопрос "Ты сделал домашку?" можно ответить уклончиво: "Ну, почти...", "Я начал...", "Эм...". Компьютер такую неопределенность ненавидит. Для него существует только два состояния:
1.  **Истина (True)** — Да, свет горит, ток идет, условие выполнено.
2.  **Ложь (False)** — Нет, темнота, условие не выполнено.

В Python для этого существует специальный тип данных — **Boolean** (логический тип).

```python
is_game_over = False
has_key = True

print(type(has_key))  # Выведет: <class 'bool'>
```

> **Важно:** В Python слова `True` и `False` всегда пишутся с **Большой буквы**. `true` (с маленькой) вызовет ошибку.

---

### Часть 2: Операторы сравнения (Детекторы лжи)

Откуда берутся `True` и `False`? Обычно они рождаются в спорах... то есть в **сравнениях**. Чтобы программа могла принять решение, она должна что-то с чем-то сравнить.

Вот главные инструменты для этого:

*   `>` (Больше)
*   `<` (Меньше)
*   `>=` (Больше или равно)
*   `<=` (Меньше или равно)
*   `==` (Равно — **обрати внимание, это два знака!**)
*   `!=` (Не равно)

#### Самая частая ошибка новичка: `=` против `==`
Это критический момент. Запомни разницу, как таблицу умножения:
*   `=` (Одиночное равно) — это **приказ**. "Переменная `x`, теперь ты равна 5!". Ты кладешь значение в коробку.
*   `==` (Двойное равно) — это **вопрос**. "Эй, переменная `x`, а ты равна 5?". Компьютер сравнит и ответит `True` или `False`.

**Пример в коде:**
```python
score = 100        # Присваивание (мы задали счет)
print(score > 50)  # Выведет: True (100 больше 50)
print(score == 90) # Выведет: False (100 не равно 90)
print(score != 0)  # Выведет: True (100 не равно 0)
```

---

### Часть 3: Конструкция `if-else` (Развилка на дороге)

Теперь, когда мы умеем получать `True` и `False`, пора научить программу действовать. Для этого используется конструкция **"Если... то... иначе..."**.

В Python это выглядит так: `if`, `else` и (для продвинутых) `elif`.

#### Базовая структура
Представь фейс-контроль в клубе.
1.  **If (Если):** Проверяет условие. Если оно `True`, выполняется код внутри.
2.  **Else (Иначе):** Выполняется *только* в том случае, если условие в `if` оказалось `False`.

```python
age = 15

if age >= 18:
    print("Доступ разрешен. Добро пожаловать!")
else:
    print("Извини, ты еще слишком молод.")
```

#### Магия отступов (Indentation)
Ты заметил, что `print` сдвинут вправо? В Python **отступы — это закон**.
*   В других языках используются скобки `{}`, но Python использует отступы (обычно 4 пробела или 1 нажатие Tab), чтобы понять, какие команды относятся к блоку `if`, а какие — нет.
*   Не забывай ставить **двоеточие (`:`)** после условия! Это как сказать компьютеру: "Слушай внимательно, вот что надо делать...".

#### А если вариантов больше двух? (`elif`)
Жизнь не всегда черно-белая. Иногда нужно проверить несколько условий подряд. Тут на сцену выходит `elif` (сокращение от *else if* — "иначе если").

**Пример:** Система оценок.
```python
score = 85

if score >= 90:
    print("Твоя оценка: A (Отлично!)")
elif score >= 75:
    print("Твоя оценка: B (Хорошо)")
elif score >= 50:
    print("Твоя оценка: C (Удовлетворительно)")
else:
    print("Твоя оценка: F (На пересдачу...)")
```
Компьютер проверяет условия сверху вниз. Как только он находит первое `True`, он выполняет этот блок и **пропускает все остальные**.

---

### Практические примеры из реальной жизни

Давай посмотрим, как это работает в приложениях, которыми ты пользуешься.

#### Пример 1: Логин в систему (Безопасность)
Простейшая имитация входа в социальную сеть.

```python
saved_password = "SuperSecretPassword123"
user_input = input("Введите пароль: ")

if user_input == saved_password:
    print("Пароль верный. Вход выполнен!")
    is_logged_in = True
else:
    print("Ошибка: Неверный пароль.")
    print("Попробуйте еще раз или восстановите доступ.")
```

#### Пример 2: Игровая механика (Health Bar)
Представь, что твоего персонажа ударил монстр. Нужно проверить, жив ли он.

```python
hp = 15       # Текущее здоровье
damage = 20   # Урон от удара

hp = hp - damage # Вычитаем урон (теперь hp = -5)

if hp > 0:
    print(f"Ты ранен! Осталось {hp} здоровья. Беги!")
else:
    print("GAME OVER")
    print("Нажмите R, чтобы начать заново.")
```
*Здесь программа принимает решение об окончании игры на основе математического сравнения.*

#### Пример 3: Умный рекомендательный сервис
Как Netflix или YouTube решают, что тебе показать? (Упрощенно).

```python
genre = "ужасы"
user_age = 14

if genre == "ужасы" and user_age < 16:
    print("Этот фильм может быть слишком страшным. Как насчет комедии?")
elif genre == "мультфильм":
    print("Отличный выбор для всей семьи!")
else:
    print("Приятного просмотра!")
```
*(Здесь мы использовали оператор `and`, который требует выполнения обоих условий сразу, но об этом подробнее на следующем уроке!)*

---

### Это интересно! (Факты о логике)

1.  **Почему `bool`?** Этот тип данных назван в честь **Джорджа Буля**, математика 19 века. Он придумал алгебру логики задолго до появления первого компьютера. Тогда все думали, что это просто философская теория, и только спустя 100 лет инженеры поняли: "Ого, да это же идеальный язык для машин!".
2.  **Самый дорогой баг в истории.** В 1996 году ракета Ariane 5 взорвалась через 40 секунд после старта. Ущерб составил 370 миллионов долларов. Причина? Ошибка в логике программы при попытке "впихнуть" большое число в переменную, которая для этого не предназначалась. Один неверный `if` (или его отсутствие) может стоить очень дорого!
3.  **Компьютер — это просто миллиарды переключателей.** В самом сердце процессора твоего смартфона нет картинок или текста. Там есть только микроскопические транзисторы, которые могут быть в двух состояниях: есть ток (True/1) или нет тока (False/0). Вся магия программирования строится на этих двух значениях.

---

### Ключевые моменты (Резюме)

*   **Bool (Булево значение):** Это тип данных, который имеет только два значения: `True` (Истина) и `False` (Ложь).
*   **Сравнение:** Используй `==` для проверки равенства. Не путай с `=` (присваиванием).
*   **Синтаксис:** После `if` и `else` всегда ставится **двоеточие (`:`)**.
*   **Отступы:** Код внутри `if` или `else` должен быть сдвинут вправо (обычно на 4 пробела). Это показывает Python, что код принадлежит этому блоку.
*   **Порядок:** `if` — начало проверки, `elif` — дополнительные условия, `else` — "план Б", если ничего не подошло.

**Твое задание:** Попробуй написать программу, которая спрашивает у пользователя температуру на улице. Если больше 25 — пишет "Надень шорты", если от 10 до 25 — "Джинсы пойдут", а если меньше 10 — "Где твоя куртка?!".

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