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 (ложь). Придумал этот тип данных британский математик Джордж Буль, и теперь его имя носит целая логическая система — булева алгебра.
Булевы значения отвечают на вопросы типа «да» или «нет», «правда» или «неправда». В 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