McBin

Переменные: Как компьютер запоминает | Урок 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 умеет делать магию! 😉
Copied to clipboard!