Переменные: Как компьютер запоминает | Урок 2
Вот готовый урок, адаптированный для ученика 9 класса.
***
# Урок: Переменные — Как компьютер запоминает
### Вступление: Зачем нам это нужно?
Представь, что ты играешь в сложную RPG. Ты потратил три часа, прокачал персонажа до 50 уровня, собрал легендарный лут, а потом... игра «забыла» всё это сделать. Твой уровень снова 1, инвентарь пуст. Бесит, правда?
Без **переменных** любая программа была бы именно такой — с памятью как у золотой рыбки (ровно 3 секунды). Переменные — это способ научить компьютер запоминать информацию: твой счет в игре, пароль от Инстаграма, количество лайков или текст сообщения, которое ты отправляешь другу.
Сегодня мы разберемся, как хранить данные, почему компьютер иногда ведет себя странно с цифрами и как заставить его считать за тебя.
---
### Часть 1: Что такое переменная?
В программировании **переменная** — это именованная область памяти. Но это звучит скучно.
**Аналогия из жизни:**
Представь огромный склад с тысячами пустых коробок.
1. Ты берешь одну коробку.
2. Клеишь на неё стикер с надписью **`score`** (счет).
3. Кладешь внутрь число **`100`**.
Теперь, когда ты скажешь компьютеру «дай мне `score`», он пойдет на склад, найдет коробку с этим стикером и скажет: «Там лежит 100».
В Python это выглядит супер-просто:
```python
score = 100
username = "CyberNinja"
```
**Важный момент:** Знак `=` в программировании — это НЕ «равно» из математики. Это **оператор присваивания**.
Читается это так: *«Взять значение справа и положить его в переменную слева»*.
---
### Часть 2: Типы данных — `int` и `str`
Компьютер — парень педантичный. Ему важно знать, *что именно* лежит в коробке: число, с которым можно делать математику, или текст, который нужно просто показать.
#### 1. Целые числа (`int`)
От английского *Integer*. Это обычные числа без запятых: 5, -10, 42, 100500.
С ними можно проводить любые арифметические операции.
```python
health = 100
damage = 25
remaining_health = health - damage # Результат: 75
```
#### 2. Строки (`str`)
От английского *String* (нитка, цепочка). Это текст — цепочка символов.
Чтобы Python понял, что это текст, а не команда, мы **обязательно** берем его в кавычки (одинарные `' '` или двойные `" "`).
```python
message = "Game Over"
name = 'Alex'
```
**Лайфхак:** Если ты напишешь число в кавычках (`'50'`), для компьютера это перестанет быть числом и станет просто картинкой с текстом «50».
---
### Часть 3: Математика для ленивых
Python — отличный калькулятор. Тебе доступны все базовые операции:
* `+` (сложение)
* `-` (вычитание)
* `*` (умножение) — обрати внимание, это звездочка, а не крестик.
* `/` (деление)
Пример:
```python
apples = 10
friends = 2
apples_per_friend = apples / friends
print(apples_per_friend) # Выведет 5.0
```
---
### Часть 4: Главная ловушка — `5 + 5` или `'5' + '5'`?
Вот здесь многие новички ломают голову. Давай посмотрим на код:
```python
a = 5 + 5
b = '5' + '5'
print(a) # Выведет: 10
print(b) # Выведет: 55
```
**Почему так происходит?**
1. В первом случае (`5 + 5`) мы работаем с типом **`int`**. Компьютер видит числа и делает математику.
2. Во втором случае (`'5' + '5'`) мы работаем с типом **`str`**. Для компьютера это не цифры, это просто символы.
Когда мы используем знак `+` для строк, происходит **конкатенация** (склеивание).
Это то же самое, что сложить слова:
`'Hot'` + `'dog'` = `'Hotdog'`
Компьютер рассуждает так: «Ага, ты дал мне текст "5" и текст "5". Ты хочешь склеить их вместе? Без проблем! Получи текст "55"».
**Запомни:**
* `int` + `int` = Математика
* `str` + `str` = Склеивание
* `str` + `int` = **Ошибка!** (Компьютер не знает, как сложить слово и число).
---
### Практические примеры
Давай применим это в реальных (ну, почти) задачах.
#### Пример 1: Игровая статистика (Работа с числами)
Представь, что ты пишешь код для шутера. Игрок нашел аптечку.
```python
current_hp = 45 # Текущее здоровье (int)
medkit_power = 50 # Сила аптечки (int)
# Игрок лечится
current_hp = current_hp + medkit_power
print(current_hp) # Результат: 95
```
*Здесь мы использовали переменную `current_hp` саму в себе: взяли старое значение (45), добавили 50 и сохранили обратно.*
#### Пример 2: Генератор никнейма (Работа со строками)
Ты регистрируешься на сайте, и система создает тебе уникальный ID.
```python
base_name = "Stalker" # Строка
clan_tag = "[RU]" # Строка
year = "2024" # Строка (заметь, в кавычках!)
full_nickname = clan_tag + base_name + year
print(full_nickname) # Результат: [RU]Stalker2024
```
*Если бы `year` был числом (2024 без кавычек), программа выдала бы ошибку. Мы не можем приклеить число к тексту, не превратив его сначала в строку.*
#### Пример 3: Расчет карманных денег
Ты копишь на новый телефон.
```python
price = 50000 # Цена телефона
savings = 12000 # Уже накоплено
monthly_income = 5000 # Откладываешь в месяц
# Сколько еще нужно накопить?
needed = price - savings
# Сколько месяцев ждать?
months_left = needed / monthly_income
print(months_left) # Результат: 7.6
```
*Ответ 7.6 месяца. Придется ждать 8 месяцев!*
---
### Интересные факты
1. **Змеиный язык:** В Python принято называть переменные маленькими буквами, разделяя слова нижним подчеркиванием: `my_super_variable`. Этот стиль называется **snake_case** (змеиный регистр). Это не обязательно, но если назовешь переменную `MyVariable`, другие питонисты посмотрят на тебя косо.
2. **Динамическая типизация:** Python — очень гибкий язык. В других языках (как C++ или Java) если ты создал коробку для целых чисел, ты не можешь положить туда текст. Python же говорит: «Расслабься, клади что хочешь». Ты можешь написать `x = 10`, а следующей строкой `x = "Привет"`. Переменная просто поменяет свой тип на лету.
---
### Ключевые моменты (Резюме)
* **Переменная** — это «коробка» с именем для хранения данных.
* Чтобы создать переменную, используй `=`: `имя = значение`.
* **`int`** — это целые числа (для математики).
* **`str`** — это строки (текст в кавычках).
* **`5 + 5`** равно `10` (математика), а **`'5' + '5'`** равно `'55'` (склеивание текста).
* Нельзя просто так складывать текст и числа — компьютер выдаст ошибку.
**Домашнее задание для мозга:**
Попробуй угадать, что выведет этот код, не запуская его:
```python
a = '10'
b = '20'
c = 5
print(a + b)
print(c * 3)
```
*(Подсказка: умножение строки на число в Python тоже работает интересно, но это тема следующего урока!)*