Переменные: Как компьютер запоминает | Урок 2
# УРОК: Переменные — Суперсила памяти твоего кода
Привет! Представь, что ты играешь в сложную RPG. Ты потратил 5 часов, прокачал персонажа до 80-го уровня, собрал легендарный лут... а потом выключил игру, и всё исчезло. Обидно? Не то слово.
В программировании точно так же. Если компьютер не запоминает данные, он бесполезен. Он может посчитать, сколько будет `2 + 2`, но тут же забудет ответ. Чтобы программа «помнила» имена пользователей, количество жизней в игре или баланс на карте, нам нужны **переменные**.
Сегодня мы разберемся, как научить Python запоминать информацию и почему для компьютера число 5 и слово "5" — это совершенно разные вещи.
---
## Часть 1: Что такое переменная?
Представь огромный склад (это оперативная память твоего компьютера). В этом складе тысячи пустых коробок.
**Переменная** — это когда мы берем одну коробку, кладем в нее что-то важное и наклеиваем на нее ярлык с названием, чтобы потом легко найти.
В Python это выглядит так:
```python
score = 1000
player_name = "Alex"
```
Давай разберем, что здесь произошло:
1. **`score`** и **`player_name`** — это ярлыки (имена переменных).
2. **`=`** — это **НЕ** знак равенства, как в математике. В программировании это **оператор присваивания**. Он говорит компьютеру: *"Возьми значение справа и положи его в коробку с именем слева"*.
3. **`1000`** и **`"Alex"`** — это значения (то, что лежит внутри коробки).
> **Важно:** Имя переменной всегда пишется слева, а значение — справа. Написать `1000 = score` нельзя, компьютер выдаст ошибку (SyntaxError). Ты же не можешь наклеить коробку на наклейку, верно?
---
## Часть 2: Типы данных — почему компьютер такой придирчивый?
Для тебя цифра 5 — это просто цифра. Но для компьютера важно знать, *что именно* лежит в коробке: число, текст или картинка. От этого зависит, что он может с этим делать.
Сегодня мы изучим два главных типа:
### 1. Целые числа (Integer или `int`)
Это обычные числа без запятых и точек. Их используют для всего, что можно посчитать: количество жизней, год рождения, количество лайков.
```python
lives = 3
year = 2023
age = 15
```
С ними можно делать математику: складывать, вычитать, умножать.
### 2. Строки (String или `str`)
Это любой текст. Имя, пароль, сообщение в чате.
Главное правило строк: **они всегда должны быть в кавычках** (одинарных `' '` или двойных `" "`).
```python
name = "Minecraft"
message = 'Привет, мир!'
number_as_text = "100" # Внимание! Это тоже строка, потому что в кавычках!
```
Кавычки для Python — как защитный барьер. Они говорят: *"Не пытайся вычислять то, что внутри. Просто запомни эти символы как текст"*.
---
## Часть 3: Великая битва — `'5' + '5'` против `5 + 5`
Вот мы и подошли к самому интересному моменту, на котором ошибаются 90% новичков. Давай посмотрим на код:
```python
# Вариант А: Числа (int)
a = 5
b = 5
print(a + b)
# Вариант Б: Строки (str)
x = '5'
y = '5'
print(x + y)
```
Как думаешь, какой будет результат?
* **Вариант А** выдаст **`10`**. Здесь все логично: математическое сложение.
* **Вариант Б** выдаст... **`'55'`**!
### Почему так?
Когда Python видит **числа** (`int`), знак `+` работает как **математическое сложение**.
Когда Python видит **строки** (`str`), знак `+` работает как «клей». Он просто берет вторую строку и приклеивает её к концу первой.
Этот процесс называется красивым словом **Конкатенация** (склеивание).
> **Аналогия из жизни:**
> * Если у тебя есть 5 яблок и ты добавишь 5 яблок, у тебя будет 10 яблок (Математика).
> * Если ты напишешь на листке цифру "5", а потом рядом напишешь еще одну "5", у тебя на листке будет написано "55" (Конкатенация).
---
## Часть 4: Математика в Python
Компьютер — отличный калькулятор. Вот основные операции, которые ты будешь использовать постоянно:
* `+` : Сложение
* `-` : Вычитание
* `*` : Умножение (звездочка, а не крестик!)
* `/` : Деление (слэш)
Пример кода:
```python
damage = 50
multiplier = 2
total_damage = damage * multiplier # Результат: 100
health = 100
damage_taken = 25
current_health = health - damage_taken # Результат: 75
```
**Интересный момент про деление:**
В Python обычное деление `/` всегда превращает результат в дробное число (тип `float`), даже если делится нацело.
* `10 / 2` вернет `5.0`, а не просто `5`.
---
## Практические примеры
Давай посмотрим, как это работает в реальных задачах.
### Пример 1: Генератор никнейма
Допустим, ты регистрируешься в игре, и система создает тебе уникальный ID, склеивая твой ник и год.
```python
nickname = "DragonSlayer"
clan_tag = "[RU]"
full_name = clan_tag + nickname # Склеиваем строки
print(full_name)
# Вывод: [RU]DragonSlayer
```
### Пример 2: Касса в магазине
Ты покупаешь сникерсы. Нужно посчитать общую сумму.
```python
price = 60 # Цена (int)
quantity = 3 # Количество (int)
total = price * quantity # Математика
print(total)
# Вывод: 180
```
### Пример 3: Ошибка новичка (исправляем баг)
Представь, что ты пишешь программу, которая увеличивает возраст пользователя на 1 год.
```python
current_age = "14" # Ой, возраст записан как строка (в кавычках)
# next_year = current_age + 1 <-- ЭТО ВЫЗОВЕТ ОШИБКУ!
```
Python скажет: *"Я не могу прибавить число к тексту! Как мне сложить слово 'стул' и число 5?"*.
Чтобы это сработало, типы данных должны совпадать. Либо оба — числа, либо оба — строки.
---
## 3 Интересных факта (для эрудиции)
1. **Почему Python так называется?** Многие думают, что в честь змеи. На самом деле создатель языка, Гвидо ван Россум, был фанатом британского комедийного шоу «Летающий цирк Монти Пайтона». Но логотип со змеями прижился, потому что это выглядит круто.
2. **Динамическая типизация.** В старых языках (как C++) нужно было заранее говорить компьютеру: «Я создаю коробку ИСКЛЮЧИТЕЛЬНО для целых чисел». Если бы ты попытался положить туда текст, программа бы взорвалась (фигурально). Python умный — он сам понимает, что ты положил в переменную, и меняет тип коробки на лету.
3. **snake_case.** В Python принято называть переменные маленькими буквами, разделяя слова нижним подчеркиванием. Например: `my_super_hero`, а не `MySuperHero`. Этот стиль называется «змеиный регистр» (snake_case).
---
## Ключевые моменты (Запомни это!)
* **Переменная** — это именованная ячейка памяти для хранения данных (`name = value`).
* **`int`** — это целые числа (для математики).
* **`str`** — это строки (текст в кавычках).
* **`'5' + '5'`** равно `'55'`, потому что строки склеиваются (конкатенация).
* **`5 + 5`** равно `10`, потому что числа складываются.
* Нельзя просто так взять и сложить текст с числом — Python выдаст ошибку.
**Домашнее задание для мозга:**
Открой Python (или любой онлайн-компилятор) и попробуй умножить строку на число. Например: `'Кусь' * 3`. Как думаешь, что произойдет? Спойлер: Python умеет делать магию! 😉