Изучаем Python | страница 26



>>> 2 + 3*4

14

>>> (2 + 3) * 4

20

Пробелы в этих примерах не влияют на то, как Python вычисляет выражения; они просто помогают быстрее найти приоритетные операции при чтении кода.

Вещественные числа


В Python числа, имеющие дробную часть, называются вещественными (или «числами с плавающей точкой»). Обычно разработчик может просто пользоваться дробными значениями, не особенно задумываясь об их поведении. Просто введите нужные числа, а Python скорее всего сделает именно то, что вы от него хотите:

>>> 0.1 + 0.1

0.2

>>> 0.2 + 0.2

0.4

>>> 2 * 0.1

0.2

>>> 2 * 0.2

0.4

Однако в некоторых ситуациях вдруг оказывается, что результат содержит неожиданно большое количество разрядов в дробной части:

>>> 0.2 + 0.1

0.30000000000000004

>>> 3 * 0.1

0.30000000000000004

Нечто подобное может произойти в любом языке; для беспокойства нет причин. Python пытается подобрать как можно более точное представление результата, что иногда бывает нелегко из-за особенностей внутреннего представления чисел в компьютерах. Пока просто не обращайте внимания на «лишние» разряды; вы ­узнаете, как поступать в подобных ситуациях, когда эта проблема станет актуальной для вас в проектах части II.

Предотвращение ошибок типов с использованием функции str()


Часто значение переменной должно использоваться внутри сообщения. Допустим, вы хотите поздравить пользователя с днем рождения. И вы написали для этого следующий код:

birthday.py

age = 23

message = "Happy " + age + "rd Birthday!"

print(message)

Казалось бы, программа должна вывести простое приветствие: Happy 23rd birthday! Но, если запустить ее, появляется сообщение об ошибке:

Traceback (most recent call last):

File "birthday.py", line 2, in

. .message = "Happy " + age + "rd Birthday!"

(1) TypeError: Can't convert 'int' object to str implicitly

На этот раз произошла ошибка типа. Это означает, что Python не понимает, какую информацию вы используете. В данном примере Python видит, что в точке (1) используется переменная с целочисленным значением (int), но не знает, как следует интерпретировать это значение. Дело в том, что переменная может представлять как число 23, так и пару отдельных символов 2 и 3. При таком использовании целых чисел в строках необходимо явно указать, что целое число должно использоваться как строка из символов. Для этого переменная передается функции str(), преобразующей не-строковые значения к строковому виду:

age = 23

message = "Happy " + str(age) + "rd Birthday!"