Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7615.pdf
Скачиваний:
2
Добавлен:
23.11.2023
Размер:
1.17 Mб
Скачать

'WrapperDescriptorType', '_GeneratorWrapper', '__all ', ' builtins ', ' cached ', ' doc ',

' file ', ' loader ', ' name ', ' package ', ' spec ', '_calculate_meta', 'coroutine', 'new_class', 'prepare_class', 'resolve_bases']

x = 1.0

# проверить, является ли переменная x числом с плавающей запятой

 

 

type(x) is float

 

 

 

 

 

 

True

 

 

 

 

 

 

 

#

проверить,

является

ли

переменная

x

целым

числом

type(x) is int False

Мы также можем использовать метод isinstance для проверки типов переменных: isinstance(x, float)

True

Вывод type x = 1.5

print(x, type(x)) 1.5 <class 'float'> x = int(x)

print(x, type(x)) 1 <class 'int'>

z = complex(x)

print(z, type(z))

(1+0j) <class 'complex'> x = float(z)

TypeError Traceback (most recent call last) <ipython-input-34-19c840f40bd8> in <module>

----> 1 x = float(z)

TypeError: can't convert complex to float

Сложные переменные не могут быть приведены к числам с плавающей запятой или целым числам. Нам нужно использовать z.real или z.imag, чтобы извлечь часть комплексного числа, которую мы хотим:

y = bool(z.real)

print(z.real, " -> ", y, type(y))

y = bool(z.imag)

print(z.imag, " -> ", y, type(y))

1.0-> True <class 'bool'>

0.0-> False <class 'bool'>

Операторы и сравнения

Большинство операторов и сравнений в Python работают так, как и следовало ожидать:

• Арифметические операторы +, -, *, /, // (целочисленное деление), '**' степень

1 + 2, 1 - 2, 1 * 2, 1 / 2 (3, -1, 2, 0.5)

9

1.0 + 2.0, 1.0 - 2.0, 1.0 * 2.0, 1.0 / 2.0

 

 

 

 

(3.0, -1.0, 2.0, 0.5)

 

 

 

 

 

#

Целочисленное

деление

чисел

с

плавающей

запятой

3.0 // 2.0

 

 

 

 

 

1.0

 

 

 

 

 

 

#

Примечание! Оператор возведения в

степень

в python не

^, а **

2 ** 2

 

 

 

 

 

 

4

 

 

 

 

 

 

Примечание. В Python 3.x оператор / всегда выполняет деление с плавающей запятой,что неверно в Python 2.x, где результатом / всегда является целое число, если операнды являются целыми числами. Если быть более точным, 1/2 = 0.5 (float) в Python 3.x и 1/2 = 0 (int) в Python 2.x (но 1.0/2 = 0.5 в Python 2.x).

Логические операторы записываются как слова: and, not, or.

True and False False

not False True

True or False True

Операторы сравнения >, <, >= (больше или равно), <= (меньше или равно), == равенство, is идентичности.

2 > 1, 2 < 1 (True, False) 2 > 2, 2 < 2 (False, False) 2 >= 2, 2 <= 2

(True, True)

# equality

[1,2] == [1,2] True

# objects identical? l1 = l2 = [1,2]

l1 is l2 True

Составные типы: строки, список и словари. Текстовые переменные

String(str) - тип переменной, который используется для хранения текстовых сообщений.

s = "Hello world" type(s)

str

#длина строки: количество символов len(s)

11

#заменить подстроку в строке

s2 = s.replace("world", "test") print(s2)

Hello test

Мы можем индексировать символ в строке, используя []: s[0]

{"type":"string"}

10

Индексация начинается с 0!

Мы можем извлечь часть строки, используя синтаксис [start:stop], который извлекает символы между индексами start и stop -1 (символ в индексе stop не включается):

s[0:5] {"type":"string"} s[4:5] {"type":"string"}

Если мы опустим один (или оба) start или stop из [start:stop], то пустое место по умолчанию будет обозначать начало и конец строки соответственно:

s[:5] {"type":"string"} s[6:] {"type":"string"} s[:] {"type":"string"}

Мы также можем определить размер шага, используя синтаксис [start:end:step] (значение по умолчанию для step равно 1, как мы видели выше):

s[::1] {"type":"string"} s[::2] {"type":"string"}

Эта техника называется нарезка (slicing). Подробнее о синтаксисе читайте здесь: http://docs.python.org/release/2.7.3/library/functions.html?highlight=slice#slice

Python имеет очень богатый набор функций для обработки текста. См. например http://docs.python.org/2/library/string.html

Примеры форматирования строк (текста)

print("str1", "str2", "str3") # Оператор печати объединяет строки с пробелом str1 str2 str3

print("str1", 1.0, False, -1j) # Операторы печати преобразуют все аргументы в строки.

str1 1.0 False (-0-1j)

print("str1" + "str2" + "str3") # строки, добавленные с помощью +, объединяются без пробела

str1str2str3

print("value = %f" % 1.0) # мы можем использовать форматирование строк в стиле C

value = 1.000000

# это форматирование создает строку

s2 = "value1 = %.2f. value2 = %d" % (3.1415, 1.5)

print(s2)

value1 = 3.14. value2 = 1

# альтернативный, более интуитивно понятный способ форматирования строки s3 = 'value1 = {0}, value2 = {1}'.format(3.1415, 1.5)

print(s3)

value1 = 3.1415, value2 = 1.5

Лист

Списки очень похожи на строки, за исключением того, что каждый элемент может быть любого типа.

Синтаксис создания списков в Python: [...]:

11

l = [1,2,3,4]

print(type(l))

print(l) <class 'list'> [1, 2, 3, 4]

Мы можем использовать те же методы нарезки для управления списками, что и для строк:

print(l)

print(l[1:3])

print(l[::2]) [1, 2, 3, 4] [2, 3] [1, 3]

Индексация начинается с 0!

l[0] 1

Элементы в списке не обязательно должны быть одного типа: l = [1, 'a', 1.0, 1-1j]

print(l)

[1, 'a', 1.0, (1-1j)]

Списки Python могут быть неоднородными и произвольно вложенными: nested_list = [1, [2, [3, [4, [5]]]]]

nested_list

[1, [2, [3, [4, [5]]]]]

Списки играют очень важную роль в Python. Например, они используются в циклах и других структурах управления потоком (обсуждается ниже). Есть ряд удобных функций для формирования списков разного типа, например функция range:

start = 10 stop = 30 step = 2

range(start, stop, step) range(10, 30, 2)

#В python 3 'range' генерирует итератор, котороый может быть преобразован в лист оператором 'list(...)'.

#Но не работает в python 2

list(range(start, stop, step))

[10, 12, 14, 16, 18, 20, 22, 24, 26, 28] list(range(-10, 10))

[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] s

{"type":"string"}

# преобразовать строку в список: s2 = list(s)

s2

['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

12

# сортировка s2.sort()

print(s2)

[' ', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

Добавление, вставка, изменение и удаление элементов из списков

#создание нового пустого листа l = []

#добавление жлеиента в лист используя `append` l.append("A")

l.append("d") l.append("d")

print(l) ['A', 'd', 'd']

Мы можем изменять списки, присваивая новые значения элементам в списке. На техническом жаргоне - списки изменяемы (mutable).

l[1] = "p" l[2] = "p"

print(l) ['A', 'p', 'p']

l[1:3] = ["d", "d"]

print(l) ['A', 'd', 'd']

Добавление элемента по определенному индексу, используя insert l.insert(0, "i")

l.insert(1, "n") l.insert(2, "s") l.insert(3, "e") l.insert(4, "r") l.insert(5, "t")

print(l)

['i', 'n', 's', 'e', 'r', 't', 'A', 'd', 'd']

Удалить первый элемент с определенным значением, используя remove l.remove("A")

print(l)

['i', 'n', 's', 'e', 'r', 't', 'd', 'd']

Удалить элемент в определенном месте, используя del: del l[7]

del l[6]

print(l)

['i', 'n', 's', 'e', 'r', 't']

Используйте help(list) для получения более подробной информации или прочтите онлайн-документацию

13

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