Top.Mail.Ru

Базовые типы данных

Ранее вы могли заметить, что числа мы записывали просто так, а текстовые данные оформляли в кавычки. Это необходимо по той причине, что Python (в отличие от многих других языков программирования) умеет сам определять, какого типа те или иные данные.

Но чтобы ему помочь — мы должны эти данные оформлять так, чтобы они однозначно идентифицировались.

Чтобы не путаться с типами данных — давайте познакомимся с самими простыми.

Числа

В Python для работы с числами есть два основных типа: целые числа (int) и числа с плавающей точкой, т. е. дробные числа (float).

Немного про целые числа:

  • Хранят любые целые значения: 0, 1, -20, 200.
  • Можно делать с ними обычные арифметические операции: сложение (+), вычитание (-), умножение (*), деление (/), целочисленное деление (//), остаток от деления (%), возведение в степень (**).

Пример:

apples = 10 # В коробке 10 яблок
eaten = 3 # Съели 3 яблока
left = apples - eaten # Осталось 7 яблок
print(left) # Вывели на экран результат 7
Есть и вещественные числа (они же дробные, они же числа с плавающей точкой):

  • Это числа с дробной частью: 3.14, -0.01, 2.0, 0.0.
  • Дробная часть от целой всегда отделяется **только точкой**: использовать запятую для разделения целой и дробной частей нельзя.
  • Также поддерживают все арифметические операции.

Пример:

banana_weight = 0.2 # 0.2 кг
bananas = 5
total_weight = banana_weight * bananas # 1.0 кг
Иногда нам нужно перевести один тип данных в другой. Тут все просто! Надо использовать для этого функции, которые называются так же, как типы данных.

К примеру, для того, чтобы преобразовать данные в тип int (целое число) — надо использовать функцию int ():

Округление чисел

В Python можно легко округлять числа. Давайте посмотрим, как сделать из дробного числа целое или округлить до нескольких знаков.

Самое простое — использовать функцию round ():
print(round(2.7)) # 3
print(round(2.3)) # 2
Но round () может быть коварна. Рассмотрим пример:
print(round(2.5)) # 2
print(round(3.5)) # 4
Почему так вышло? Python округляет числа на половине (.5) к ближайшему чётному числу.
Это называется «банковское округление» (банкиры любят чётные числа!).

Также с помощью функции round () можно округлить число до нужного количества знаков после точки. Для этого округляемое число необходимо передать первым аргументом, а количество знаков вторым:
print(round(13.5768, 2)) # 13.58
Иногда вам не нужно никакого округления, просто — обрубить дробный «хвостик». В таком случае будет достаточно конвертировать число в целое:
print(int(5.999)) # 5
print(int(-3.5)) # -3

Строки

Строка — это просто набор символов, которые идут подряд, как слова в книге или буквы на вывеске. В Python строка — это специальный тип данных, который хранит текст.

Примеры строк:

"Привет"
'Пирог'
"123"
Строки всегда берутся в кавычки: либо в двойные " ", либо в одинарные ' ' — это не важно. Главное, чтобы открывающая и закрывающая кавычка совпадали.

Если у вас есть две строки, то вы можете «сложить» их вместе, и получится одна длинная строка, где тексты просто соединяются по очереди.
слово1 = "Привет, "
слово2 = "мир!"
результат = слово1 + слово2
print(результат)
Вывод будет:
Привет, мир!

Если умножить строку на число, например 3, то эта строка просто повторится 3 раза подряд.
смех = "ха"
веселый_смех = смех * 3
print(веселый_смех)
Вывод:
хахаха

Логические переменные

Булевы переменные — это особый тип переменных, который может принимать только два значения: True (истина) или False (ложь). Придумал этот тип данных британский математик Джордж Буль (George Boole), и теперь его имя носит целая логическая система — булева алгебра.
Булевы значения отвечают на вопросы типа «да» или «нет», «правда» или «неправда». В Python они записываются с большой буквы: True и False.
is_cat_cute = True
is_sky_green = False
Здесь переменная is_cat_cute (котик милый?) равна True, ведь, конечно же, котики милы! А вот небо зелёного цвета? Конечно, нет, поэтому is_sky_green = False.

Чаще всего булевы переменные появляются автоматически, когда мы делаем сравнения с помощью операторов вроде ==, >, < и других:
a = 5
b = 10

print(a < b) # True, потому что 5 меньше 10
print(a == b) # False, потому что 5 не равно 10
В Python есть всего шесть основных операторов сравнения:
Оператор
Что проверяет
Пример
Результат
==
Равенство
5 == 5
True
!=
Не равно
5 != 3
True
<
Меньше
3 < 5
True
>
Больше
7 > 2
True
<=
Меньше или равно
4 <= 4
True
>=
Больше или равно
5 >= 6
False
Примеры:
a = 10
b = 20

print(a == b) # False, потому что 10 не равно 20
print(a != b) # True, потому что 10 действительно не равно 20
print(a < b) # True, 10 меньше 20
print(a > b) # False, 10 не больше 20
print(a <= 10) # True, 10 меньше или равно 10
print(b >= 30) # False, 20 не больше и не равно 30
Важно запомнить следующие моменты:

  • Операторы всегда возвращают True или False.
  • Не путайте оператор равенства == с оператором присваивания =. Первый проверяет равенство, а второй — задаёт значение для переменной.

Иногда нам может быть интересно проверить сразу несколько условий. Для этого мы можем использовать логические операторы and (если нам нужно, чтобы сразу оба условия были истинны) и or (если нам достаточно истинности хотя бы одного):
a = 10
b = 20

print((a > 5) and (b < 13)) # будет False, так как истинно только первое условие
print((a > 5) or (b < 13)) # будет True, так как хватает истинности одного условия
-

Задачи для самопроверки

Задача 1. Счёт в кафе со скидкой и чаевыми

Условие. В кафе заказали латте за 180.5, круассан за 95 и сок за 120.25. На заказ действует скидка 10%, а после скидки добавляется сервисный сбор 5%. Бюджет — 500 рублей. Найдите итоговую сумму к оплате (округлите до 2 знаков) и сколько останется сдачи.

Решение: [[toggle]]
latte = 180.5
croissant = 95
juice = 120.25
discount = 0.10 # 10%
service_fee = 0.05 # 5%
budget = 500

subtotal = latte + croissant + juice # 395.75
after_discount = subtotal * (1 - discount) # 356.175
total = round(after_discount * (1 + service_fee), 2) # 373.98

change = round(budget - total, 2)

print("К оплате:", total) # 373.98
print("Сдача:", change) # 126.02
Задача 2. Пицца на всех

Условие. Есть 23 куска пиццы, 5 друзей и вы. Сколько кусков получит каждый (если вы делите пиццу так, что каждому должно достаться одно и то же количество кусков) и сколько останется? Выведите оба числа.

Решение: [[toggle]]
slices = 23
friends = 5
people = friends + 1

per_person = slices // people
leftover = slices % people

print("Каждому по:", per_person) # 3
print("Останется:", leftover) # 5

Условные конструкции: if, else, elif