Числа в Python: int, float и арифметические операции
Этот урок переведён с английского оригинала.Read in EnglishLeer en españolСообщить об ошибке в переводе
Вы с тремя друзьями делите счёт в ресторане. Всего вышло 85 долларов. Сколько должен каждый? Вы тянетесь за калькулятором в телефоне, а программист на Python набирает 85 / 4 и сразу получает ответ.
Математика лежит в основе программирования. Игры с её помощью рассчитывают физику, приложения считают цены, а анализ данных без неё вообще невозможен. Хорошая новость: в Python математика похожа на очень мощный калькулятор.
В этом уроке вы узнаете, как Python работает с числами, какие в нём есть операторы и как избежать ошибок, на которых спотыкаются новички. К концу урока вы будете уверенно решать практические задачи с вычислениями.
Что такое целые числа и числа с плавающей точкой?
В Python два основных типа чисел. Целые числа (int) не имеют дробной части. Числа с плавающей точкой (float) записываются с десятичной точкой.
Представьте деньги. «5 долларов» можно записать целым числом, а «5,99 доллара» уже дробным. Вся разница в дробной части. (В коде Python её всегда отделяют точкой: 5.99, а не 5,99.)
<class 'int'> <class 'float'> <class 'int'> <class 'float'>
Когда что использовать? Целые числа подходят для того, что вы считаете: людей, предметов, очков, жизней в игре. Float подходит для того, что вы измеряете: веса, температуры, процентов, денег.
Как выполнять математические операции в Python
Python поддерживает все базовые математические операции, которые вы уже знаете. Символы почти такие же, как при записи на бумаге.
13 7 30 3.3333333333333335
Сложение, вычитание и умножение работают ровно так, как вы ожидаете. А у деления есть сюрприз: оно всегда возвращает float, даже если результат получился целым.
5.0 <class 'float'> 10.0 2.0
С переменными можно выполнять те же вычисления, что и с обычными числами. Здесь и начинается самое полезное.
Subtotal: $50.0 Tax: $4.0 Total: $54.0
Что такое целочисленное деление (//) и остаток от деления (%)?
В Python есть два особых оператора, которые ходят парой, как чай с лимоном: целочисленное деление (//) и остаток от деления (%). Они отвечают на два разных вопроса об одном и том же делении.
Представьте, что у вас 17 конфет и 5 друзей. 17 // 5 говорит, что каждому другу достанется по 3 конфеты. 17 % 5 говорит, что 2 конфеты останутся лишними.
Как работает целочисленное деление (//)?
Целочисленное деление (//) делит и округляет результат вниз до ближайшего целого. Дробная часть отбрасывается целиком.
3.4 3 3.3333333333333335 3 3.5 3 -4
Как работает оператор остатка от деления (%)?
Оператор остатка от деления (%) возвращает остаток, который получается при делении. Он невероятно полезен и встречается гораздо чаще, чем можно подумать.
2 1 0 1 42 is even
Чаще всего остаток нужен, чтобы проверить, делится ли число без остатка. Если x % y == 0, значит, x делится на y нацело. Так проверяют чётность, високосные годы и многое другое.
Как возводить число в степень в Python
Для возведения в степень в Python есть оператор **. Во многих языках для этого нужна функция, а в Python это оператор. Коротко и понятно.
8 25 1000000 3.0 3.0
Полезный приём: возведение в степень 0.5 даёт квадратный корень, а ** (1/3) даёт кубический. Для простых корней отдельная функция не нужна.
$1000 at 5.0% for 10 years = $1628.89
Каков порядок выполнения операций в Python?
Python соблюдает тот же порядок действий, что и школьная математика: сначала скобки, затем степени, потом умножение и деление и в конце сложение и вычитание. В англоязычных школах его запоминают по сокращению PEMDAS.
14 2 13.0 20 512 8.0
Вот полный список приоритетов, от высшего к низшему:
() - скобки (всегда первыми)** - возведение в степень*, /, //, % - умножение, деление, целочисленное деление, остаток от деления+, - - сложение и вычитаниеresult = base + rate * hours - discount / 2
print(result)result = base + (rate * hours) - (discount / 2)
print(result)Какие встроенные математические функции есть в Python?
В Python есть несколько встроенных функций для типичных математических задач. Импортировать ничего не нужно: они доступны везде.
Как использовать abs(), round(), min() и max()
10 10 3.7 4 3 3.14 1200
1 -20 8 -5 Score 150 clamped to 100
Как преобразовать целое число во float и обратно
Иногда нужно перейти от одного типа чисел к другому. int() превращает float в целое число, а float() превращает целое число во float.
3 3 -2 42.0 -7.0 25 3.14
В некоторых случаях Python сам выполняет автоматическое преобразование. Если в одной операции участвуют целое число и float, Python автоматически превращает целое число во float.
7.0 <class 'float'> 15.0 6.5 <class 'float'>
Какие ошибки с числами чаще всего допускают в Python?
Разберём ошибки, на которых спотыкаются новички в Python. Если знать их заранее, можно сэкономить часы отладки.
Ошибка 1: ждать от / целого числа
total_items = 10
people = 2
each = total_items / people
print(f"Each gets {each} items") # "Each gets 5.0 items"total_items = 10
people = 2
each = total_items // people
print(f"Each gets {each} items") # "Each gets 5 items"Ошибка 2: путать / и //
3.5 3 3.75 3
Ошибка 3: забыть скобки в формулах
# Converting Fahrenheit to Celsius
fahrenheit = 212
celsius = fahrenheit - 32 * 5 / 9
print(celsius) # 194.22... WRONG!# Converting Fahrenheit to Celsius
fahrenheit = 212
celsius = (fahrenheit - 32) * 5 / 9
print(celsius) # 100.0 CORRECT!Практические упражнения
Пора применить знания о числах на деле! В этих упражнениях встречаются жизненные ситуации, так что вы увидите, как математика в Python помогает в повседневных задачах.
Попробуйте решить каждое упражнение самостоятельно, прежде чем открывать подсказки. Ошибаться не страшно: это часть обучения.
Вы покупаете товары в магазине. Посчитайте общую стоимость покупки и выведите её.
Выведите итог точно в таком формате:
Total: $16.0С помощью оператора остатка от деления (%) проверьте, чётное число или нечётное.
Дана переменная number со значением 37. Выведите результат точно в таком формате:
37 is oddЕсли бы число было чётным (например, 42), вывод был бы таким:
42 is evenЭтот код должен поровну разделить 10 пицц между 3 группами и сообщить, сколько пицц останется. Но в нём стоят не те операторы деления!
Исправьте код, чтобы вывод был таким:
Each group gets 3 pizzas
Leftover pizzas: 1Переведите температуру из градусов Фаренгейта в градусы Цельсия по формуле:
**Цельсий = (Фаренгейт - 32) * 5 / 9**
Дана переменная fahrenheit со значением 72. Вычислите температуру по Цельсию, округлите её до 1 знака после запятой и выведите:
72F = 22.2CНе запуская код, предскажите, что выведет каждая строка. Запишите свои предположения в комментариях, а затем запустите код и проверьте себя.
Посчитайте сложные проценты по формуле:
**A = P * (1 + r) t
Где:
Вычислите итоговую сумму и заработанные проценты, а затем выведите:
Final amount: $1628.89
Interest earned: $628.89Округлите оба значения до 2 знаков после запятой.
Итоги: числа и математика в Python
Краткая шпаргалка по всем операторам и функциям из этого урока:
| Оператор | Название | Пример | Результат |
|---|---|---|---|
+ | Сложение | 5 + 3 | 8 |
- | Вычитание | 5 - 3 | 2 |
* | Умножение | 5 * 3 | 15 |
/ | Деление | 5 / 3 | 1.666... |
// | Целочисленное деление | 5 // 3 | 1 |
% | Остаток от деления | 5 % 3 | 2 |
** | Возведение в степень | 5 ** 3 | 125 |
Встроенные функции:
| Функция | Назначение | Пример |
|---|---|---|
abs(x) | Модуль числа | abs(-5) → 5 |
round(x, n) | Округление до n знаков после запятой | round(3.14, 1) → 3.1 |
min(a, b, ...) | Наименьшее значение | min(3, 1, 4) → 1 |
max(a, b, ...) | Наибольшее значение | max(3, 1, 4) → 4 |
int(x) | Преобразование в целое число | int(3.9) → 3 |
float(x) | Преобразование во float | float(5) → 5.0 |
Что дальше?
В следующем уроке, [Строки в Python](/python/python-strings), вы научитесь работать с текстом. Вы познакомитесь со срезами и методами строк и узнаете, как соединять строки и числа в понятный вывод.