Контрольная работа №4

 

Числа: целые, вещественные, комплексные

 

Целые числа (int)

Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:

x + y Сложение
x - y Вычитание
x * y Умножение
x / y Деление
x // y Получение целой части от деления
x % y Остаток от деления
-x Смена знака числа
abs(x) Модуль числа
divmod(x, y) Пара (x // y, x % y)
x ** y Возведение в степень
pow(x, y[, z]) xy по модулю (если модуль задан)

Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).

>>>

>>> 255 + 34

289

>>> 5 * 2

10

>>> 20 / 3

6.666666666666667

>>> 20 // 3

6

>>> 20 % 3

2

>>> 3 ** 4

81

>>> pow(3, 4)

81

>>> pow(3, 4, 27)

0

>>> 3 ** 150

369988485035126972924700782451696644186473100389722973815184405301748249

Битовые операции

Над целыми числами также можно производить битовые операции

x | y Побитовое или
x ^ y Побитовое исключающее или
x & y Побитовое и
x << n Битовый сдвиг влево
x >> y Битовый сдвиг вправо
~x Инверсия битов

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

int.bit_length () - количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.

>>>

>>> n = -37

>>> bin(n)

'-0b100101'

>>> n.bit_length()

6

int.to_bytes (length, byteorder, *, signed=False) - возвращает строку байтов, представляющих это число.

>>>

>>> (1024).to_bytes(2, byteorder='big')

b'\x04\x00'

>>> (1024).to_bytes(10, byteorder='big')

b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'

>>> (-1024).to_bytes(10, byteorder='big', signed=True)

b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'

>>> x = 1000

>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little')

b'\xe8\x03'

classmethod int.from_bytes (bytes, byteorder, *, signed=False) - возвращает число из данной строки байтов.

>>>

>>> int.from_bytes(b'\x00\x10', byteorder='big')

16

>>> int.from_bytes(b'\x00\x10', byteorder='little')

4096

>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)

-1024

>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)

64512

>>> int.from_bytes([255, 0, 0], byteorder='big')

16711680

Системы счисления

 

Иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:

· int ([object], [основание системы счисления]) - преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.

· bin (x) - преобразование целого числа в двоичную строку.

· hex (х) - преобразование целого числа в шестнадцатеричную строку.

· oct (х) - преобразование целого числа в восьмеричную строку.

Примеры:

>>>

>>> a = int('19') # Переводим строку в число

>>> b = int('19.5') # Строка не является целым числом

Traceback (most recent call last):

File "", line 1, in

ValueError: invalid literal for int() with base 10: '19.5'

>>> c = int(19.5) # Применённая к числу с плавающей точкой, отсекает дробную часть

>>> print(a, c)

19 19

>>> bin(19)

'0b10011'

>>> oct(19)

'0o23'

>>> hex(19)

'0x13'

>>> 0b10011 # Так тоже можно записывать числовые константы

19

>>> int('10011', 2)

19

>>> int('0b10011', 2)

19

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

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

>>>

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

0.9999999999999999

 

 


 


Контрольная работа №5

Работа со строками в Python: литералы

Строки в 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 (не является признаком конца строки)

"Сырые" строки - подавляют экранирование

Если перед открывающей кавычкой стоит символ 'r' (в любом регистре), то механизм экранирования отключается.

S = r'C:\newt.txt'

Но, несмотря на назначение, "сырая" строка не может заканчиваться символом обратного слэша. Пути решения:

S = r'\n\n\\'[:-1]

S = r'\n\n' + '\\'

S = '\\n\\n'

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

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

>>> c = '''это очень большая

... строка, многострочный

... блок текста'''

>>> c

'это очень большая\nстрока, многострочный\nблок текста'

>>> print(c)

это очень большая

строка, многострочный

блок текста

 

Строки. Функции и методы строк

Функции и методы строк.

Базовые операции

· Конкатенация (сложение)

>>>

>>> S1 = 'spam'

>>> S2 = 'eggs'

>>> print(S1 + S2)

'spameggs'

· Дублирование строки

>>>

>>> print('spam' * 3)

spamspamspam

· Длина строки (функция len)

>>>

>>> len('spam')

4

· Доступ по индексу

>>>

>>> S = 'spam'

>>> S[0]

's'

>>> S[2]

'a'

>>> S[-2]

'a'

Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.

· Извлечение среза

Оператор извлечения среза: [X:Y]. X – начало среза, а Y – окончание;

символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй - длине строки.

>>>

>>> s = 'spameggs'

>>> s[3:5]

'me'

>>> s[2:-2]

'ameg'

>>> s[:6]

'spameg'

>>> s[1:]

'pameggs'

>>> s[:]

'spameggs'

Кроме того, можно задать шаг, с которым нужно извлекать срез.

>>>

>>> s[::-1]

'sggemaps'

>>> s[3:5:-1]

''

>>> s[2::2]

'aeg'


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: