Книга «Изучаем Python»


    Глава 2  •  Переменные и простые типы данных >>> 2 + 3



Pdf көрінісі
бет36/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   32   33   34   35   36   37   38   39   ...   238
42    Глава 2  •  Переменные и простые типы данных

>>> 2 + 3

>>> 3 - 2



>>> 2 * 3

>>> 3 / 2



1.5

В терминальном сеансе Python просто возвращает результат операции. Для пред-

ставления операции возведения в степень в Python используется сдвоенный знак 

умножения:

>>> 3 ** 2

9

>>> 3 ** 3



27

>>> 10 ** 6

1000000

В Python также существует определенный порядок операций, что позволяет ис-

пользовать несколько операций в одном выражении. Круглые скобки используются 

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

порядке. Пример:

>>> 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 




Числа    43

>>> 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!"

  TypeError: Can't convert 'int' object to str implicitly



На этот раз произошла ошибка типа. Это означает, что Python не понимает, какую 

информацию вы используете. В данном примере Python видит, что в точке  ис-

пользуется переменная с целочисленным значением (

int


), но не знает, как следует 

интерпретировать это значение. Дело в том, что переменная может представлять 

как число 23, так и пару отдельных символов 2 и 3. При таком использовании целых 

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

как строка из символов. Для этого переменная передается функции 

str()


, преоб-

разующей не-строковые значения к строковому виду:

age = 23

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

print(message)

Теперь Python понимает, что вы хотите преобразовать числовое значение 23 

в строку и вывести символы 2 и 3 в составе поздравления. Ожидаемый результат 

выводится без всяких ошибок:

Happy 23rd Birthday!

В большинстве случаев работа с числами в Python проходит достаточно тривиаль-

но. Если вы получаете неожиданные результаты, проверьте, правильно ли Python 

интерпретирует числовые данные – как числовое значение или как строку.




44    Глава 2  •  Переменные и простые типы данных

Целые числа в Python 2

При делении целых чисел Python 2 возвращает несколько иной результат:

>>> python2.7

>>> 3 / 2

1

Вместо 1.5 Python возвращает 1. Результатом деления целых чисел в Python 2 



становится целое число с потерей остатка. Обратите внимание: результат не округ-

ляется, просто остаток от деления пропадает.

Чтобы избежать этого поведения в Python 2, проследите за тем, чтобы хотя бы 

одно из двух чисел было вещественным. В этом случае результат также будет 

вещественным:

>>> 3 / 2

>>> 3.0 / 2



1.5 

>>> 3 / 2.0

1.5 

>>> 3.0 / 2.0



1.5

Такое поведение при делении часто приводит к недоразумениям, когда люди, при-

выкшие работать с Python 3, начинают использовать Python 2, или наоборот. Если 

вы используете или пишете код, в котором смешиваются целые и вещественные 

числа, будьте внимательны.



Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет