Логика: Искусство принятия решений | Урок 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 — "Где твоя куртка?!".
Удачи в коде! 🚀