Урок 2 из 8 · 20 мин · обновлено
Типы данных и условия
Чем число отличается от строки, как превратить одно в другое и как научить программу принимать решения с помощью if, elif и else.
Типы данных
У каждого значения в Python есть тип — он определяет, что с этим значением можно делать.
| Тип | Что хранит | Пример |
|---|---|---|
int |
целое число | 42, -7 |
float |
дробное число | 3.14, 0.5 |
str |
строка, то есть текст | "Привет", "42" |
bool |
логическое значение | True, False |
Тип можно узнать функцией type():
print(type(42)) # <class 'int'>
print(type("42")) # <class 'str'>
Обратите внимание: "42" в кавычках — это уже не число, а текст.
Превращение типов
Числа складываются, строки склеиваются, а смешивать их нельзя:
print(2 + 3) # 5
print("2" + "3") # 23 — строки просто склеились
print("2" + 3) # ошибка TypeError
Чтобы превратить одно в другое, есть функции int(), float() и str():
print(int("2") + 3) # 5
print("Мне " + str(25)) # Мне 25
Это особенно важно при работе с input() — функцией, которая спрашивает пользователя и ждёт ответа. Она всегда возвращает строку:
age = int(input("Сколько вам лет? "))
print("Через 10 лет вам будет", age + 10)
Сравнения
Сравнение отвечает на вопрос «да или нет» и возвращает True или False:
| Оператор | Значение |
|---|---|
== |
равно |
!= |
не равно |
>, < |
больше, меньше |
>=, <= |
больше или равно, меньше или равно |
Не путайте: = присваивает значение, а == сравнивает.
Условия: if, elif, else
Условия позволяют программе выбирать, что делать:
temperature = 12
if temperature >= 20:
print("Можно идти в футболке")
elif temperature >= 10:
print("Возьмите куртку")
else:
print("Нужна тёплая одежда")
Результат: Возьмите куртку.
Как это работает:
- Python проверяет первое условие. Если оно верно, выполняет блок под ним и пропускает остальное.
- Если нет, проверяет следующее
elif(сокращение от else if). - Если не подошло ни одно условие, выполняется блок
else.
Двоеточие в конце строки и отступ в 4 пробела обязательны: так Python понимает, какие строки относятся к условию.
Несколько условий сразу
and— верны оба условия;or— верно хотя бы одно;not— переворачивает значение.
age = 30
has_ticket = True
if age >= 18 and has_ticket:
print("Проходите")
Попробуйте сами. Напишите программу для кинотеатра: она спрашивает возраст и выводит цену билета. До 7 лет — бесплатно, от 7 до 17 — 250 ₽, от 18 — 400 ₽.
Решение
age = int(input("Ваш возраст: "))
if age < 7:
print("Бесплатно")
elif age < 18:
print("Билет стоит 250 ₽")
else:
print("Билет стоит 400 ₽")
Проверять второе условие как age >= 7 and age < 18 не нужно: если программа дошла до elif, значит первое условие уже не выполнилось и возраст точно не меньше 7.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Какой тип у значения '5' (в кавычках)?
Всё, что в кавычках, — строка, даже если внутри цифры. Сложить такую строку с числом не получится, пока не превратите её в число.
-
Пользователь ввёл 30 в ответ на input(). Что получит программа?
input() всегда возвращает строку. Чтобы посчитать что-то с введённым числом, его оборачивают в int() или float().
-
Зачем нужен отступ под строкой с if?
В Python отступ — часть синтаксиса: всё, что сдвинуто на 4 пробела под if, выполняется только при верном условии.
-
Чему равно выражение age >= 18 and age < 65, если age = 70?
and требует, чтобы были верны оба условия. 70 >= 18 — верно, но 70 < 65 — нет, поэтому всё выражение ложно.