Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Materialy_2.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

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

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:

>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1

0.9999999999999999

Для высокой точности используют другие объекты (например decimal и fraction).

Также вещественные числа не поддерживают длинную арифметику:

>>> a = 3 ** 1000

>>> a + 0.1

Traceback (most recent call last):

File "", line 1, in

OverflowError: int too large to convert to float

Простенькие примеры работы с числами:

>>> c = 150

>>> d = 12.9

>>> c + d

162.9

>>> p = abs(d - c) # Модуль числа

>>> print(p)

137.1

>>> round(p) # Округление

137

Дополнительные методы

float.as_integer_ratio() - пара целых чисел, чьё отношение равно этому числу.

float.is_integer() - является ли значение целым числом.

float.hex() - переводит float в hex (шестнадцатеричную систему счисления).

classmethod float.fromhex(s) - float из шестнадцатеричной строки.

>>> (10.5).hex()

'0x1.5000000000000p+3'

>>> float.fromhex('0x1.5000000000000p+3')

10.5

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

Модуль math предоставляет более сложные математические функции.

>>> import math

>>> math.pi

3.141592653589793

>>> math.sqrt(85)

9.219544457292887

Модуль random реализует генератор случайных чисел и функции случайного выбора.

>>> import random

>>> random.random()

0.15651968855132303

Комплексные числа (complex)

В Python встроены также и комплексные числа:

>>> x = complex(1, 2)

>>> print(x)

(1+2j)

>>> y = complex(3, 4)

>>> print(y)

(3+4j)

>>> z = x + y

>>> print(x)

(1+2j)

>>> print(z)

(4+6j)

>>> z = x * y

>>> print(z)

(-5+10j)

>>> z = x / y

>>> print(z)

(0.44+0.08j)

>>> print(x.conjugate()) # Сопряжённое число

(1-2j)

>>> print(x.imag) # Мнимая часть

2.0

>>> print(x.real) # Действительная часть

1.0

>>> print(x > y) # Комплексные числа нельзя сравнить

Traceback (most recent call last):

File "", line 1, in

TypeError: unorderable types: complex() > complex()

>>> print(x == y) # Но можно проверить на равенство

False

>>> abs(3 + 4j) # Модуль комплексного числа

5.0

>>> pow(3 + 4j, 2) # Возведение в степень

(-7+24j)

Также для работы с комплексными числами используется также модуль cmath.

Округление чисел и его особенности

Округлением чисел в Python занимается встроенная функция round.

round(number[, ndigits]) - округляет число number до ndigits знаков после запятой (по умолчанию, до нуля знаков, то есть, до ближайшего целого)

>>> round(1.5)

2

>>> round(2.5)

2

>>> round(2.65, 1)

2.6

>>> round(2.75, 1)

2.8

Тут есть одна особенность, о которой нужно знать, и о которой часто забывают.

Со школы многие привыкли, что, когда (N + 1) знак = 5, а последующие знаки равны нулю, округление производится всегда в большую по модулю сторону.

Однако, как видно из примеров, в Python это не так. Здесь используется так называемое "Банковское округление", то есть округление к ближайшему чётному.

На практике это оказывается не так уж и важно, например:

>>> round(2.85, 1)

2.9

Что-то не так, правда? На самом деле, всё именно так, как и задумывалось. Просто из-за проблем с точностью чисел с плавающей точкой это число чуть больше, чем 2.85, а потому округляется до 2.9.

>>> from fractions import Fraction

>>> a = Fraction(2.85)

>>> b = Fraction('2.85')

>>> a == b

False

>>> a > b

True

Строки

Строки в Python - упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.

Литералы строк

Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.

Строки в апострофах и в кавычках

S = 'spam"s'

S = "spam's"

Строки в апострофах и в кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.

Экранированные последовательности - служебные символы

Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.

Экранированная последовательность

Назначение

\n

Перевод строки

\a

Звонок

\b

Забой

\f

Перевод страницы

\r

Возврат каретки

\t

Горизонтальная табуляция

\v

Вертикальная табуляция

\N{id}

Идентификатор ID базы данных Юникода

\uhhhh

16-битовый символ Юникода в 16-ричном представлении

\Uhhhh…

32-битовый символ Юникода в 32-ричном представлении

\xhh

16-ричное значение символа

\ooo

8-ричное значение символа

\0

Символ Null (не является признаком конца строки)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]