SlideShare ist ein Scribd-Unternehmen logo
1 von 96
Основы Python: типы данных, операторы
Технологии и языки программирования
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
Версия 10.2016
Содержание
1 Синтаксис
2 Основные типы данных
3 Последовательности
4 Строки
5 Атомарные и ссылочные типы
6 Кортежи
7 Множество (set)
8 Словари (dictionary)
9 Управляющие конструкции
10 Задания
Кафедра Теоретической механики Основы Python: типы данных, операторы 2 / 81
История
История
https://commons.wikimedia.org
Язык Python (Питон или Пайтон)
разработан нидерландским
программистом Гвидо ван
Россумом (Guido van Rossum)
Начало разработки: конец 80-х
годов
1994 v. 1.0 – 2000 v. 1.6
2000 v. 2.0 – 2010 v. 2.7
2008 v. 3.0 – 2015 v. 3.5
https://www.python.org
Кафедра Теоретической механики Основы Python: типы данных, операторы 3 / 81
История
Особенности языка
Интерпретируемый, кроссплатформенный язык
Python поддерживает различные парадигмы
программирования:
модульное программирование
объектно-ориентированное программирование
функциональное программирование
Динамическая сильная типизация
Типы переменных определяются во время выполнения
программы
Поддержка структур данных высокого уровня
set, dict
Автоматизированная система контроля памяти
Кафедра Теоретической механики Основы Python: типы данных, операторы 4 / 81
История
Среда разработки
IDLE
https://docs.python.org/3/library/idle.html
Простейшая интегрированная среда разработки.
Поставляется вместе с Pyhon.
PyCharm
https://www.jetbrains.com/pycharm/download
Anaconda
https://www.continuum.io/downloads
Python + IDE Spyder с набором библиотек (numpy, scipy, ...)
для научных вычислений
Кафедра Теоретической механики Основы Python: типы данных, операторы 5 / 81
Синтаксис
Синтаксис
Файл программы, функции
В первой или второй строке файла программы, модуля должна
быть указана кодировка файла, например, UTF-8
1 # −*− coding : utf −8 −*−
или 1251 – кодировка MS Windows
1 # −*− coding : cp1251 −*−
Кафедра Теоретической механики Основы Python: типы данных, операторы 8 / 81
Синтаксис
Логические и физические строки
Программа состоит из логических строк
Логическая строка состоит из одной или нескольких
физических строк
Физические строки объединяются в одну логическую при
помощи символа 
1 i f 1900 < year < 2100 and 1 <= month <= 12 
2 and 1 <= day <= 31 and 0 <= hour < 24 :
3 return 1
Выражения в скобках ( ) [ ] { } могут быть записаны в
несколько строк без использования символа 
1 s t a r s = [ ” V645 Cen ” , ” Alpha Cen A” , ” Alpha Cen B” ,
2 ” Barnard ’ s Star ” , ” Wolf 359 ” , ”BD+362147 ” ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 9 / 81
Синтаксис
Имена переменных
Буквы в нижнем или верхнем регистре
Цифры
Нижнее подчёркивание
Имена переменных не могут начинаться с цифры
1 a1 = 10
2 a_3 = 20
3 A3 = 7
4 _ab = 9
Кафедра Теоретической механики Основы Python: типы данных, операторы 10 / 81
Синтаксис
Ключевые слова
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass print
break except in raise
Эти ключевые слова не могут быть использованы в качестве имен
переменных (идентификаторов)
Кафедра Теоретической механики Основы Python: типы данных, операторы 11 / 81
Синтаксис
Комментарии
Комментарии начинаются с символа #, если этот символ не
является частью строковой константы
1 a = ”Здесь символ # не обозначает начало комментария”
Комментарий заканчивается в конце физической стоки
1 # Six nearest s t a r s
2 s t a r s = [ ” V645 Cen ” , ” Alpha Cen A” , ” Alpha Cen B” ,
3 ” Barnard ’ s Star ” , ” Wolf 359 ” , ”BD+362147 ” ]
Многострочные комментарии* могут записаны в виде
безымянной строковой константы
1 ’ ’ ’
2 T r i p l e quotes are treated as regular s t r i n g s
3 with the exception that they can
4 span multiple l i n e s .
5 ’ ’ ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 12 / 81
Основные типы данных
Основные типы данных
Классификация
Атомарные
bool, int, float, complex
Ссылочные
list, tuple, str, map, dict, set
Изменяемые
list, dict, set
Неизменяемые
tuple, str
Кафедра Теоретической механики Основы Python: типы данных, операторы 14 / 81
Основные типы данных
Булевы переменные
1 a = True
2 b = False
3
4 c = 7>3
5 p r i n t ( c )
6 True
Кафедра Теоретической механики Основы Python: типы данных, операторы 15 / 81
Основные типы данных
Целые числа
1 a=15687554
Явное преобразование в тип int с отбрасыванием дробной
части:
1 b= i n t (10/ 3)
2 3
Размер int ограничен только памятью ЭВМ
1 a=2**1000
2 10715086071862673209484250490600018105614048117055
3 33607443750388370351051124936122493198378815695858
4 12759467291755314682518714528569231404359845775746
5 98574803934567774824230985421074605062371141877954
6 18215304647498358194126739876755916554394607706291
7 4571196477686542167660429831652624386837205668069376
Кафедра Теоретической механики Основы Python: типы данных, операторы 16 / 81
Основные типы данных
Математические операторы
+ сложение 2 + 2 = 4
- вычитание 5 - 3 = 2
* умножение 2 * 2 = 4
/ деление 7 / 2 = 3.5
// целочисленное деление 7 // 2 = 3
% остаток от деления 7 % 2 = 1
** возведение в степень 7 ** 2 = 49
Кафедра Теоретической механики Основы Python: типы данных, операторы 17 / 81
Основные типы данных
Вещественное число (64-bit double precision)
В отличии от языков Cи или Паскаль в языке Питон определён
только один тип вещественного числа float – 64 битное число
double precision в соответствии со стандартом IEEE 754
1 a = 123.1445
Явное преобразование в тип float
1 a = f l o a t ( 3 )
Размер ограничен:
1 a = 3**1000 # 3 в степени 1000 − целое число
2 b = f l o a t ( a )
OverflowError: int too large to convert to float
Кафедра Теоретической механики Основы Python: типы данных, операторы 18 / 81
Основные типы данных
Комплексные числа
a = 7 + 3i
1 a = complex ( 7 , 3 )
Вещественная часть
1 p r i n t ( a . rea l )
2 7.0
Мнимая часть
1 p r i n t ( a . imag )
2 3.0
Мнимая и вещественная часть комплексного числа имеют тип
double
Кафедра Теоретической механики Основы Python: типы данных, операторы 19 / 81
Последовательности
Последовательности
Списки (list)
Списки значений создаются при помощи оператора [ ] с
перечислением объектов, разделённых запятыми:
1 a = [1 , ’ word ’ , 2 , complex ( 1 , 2 ) ]
Длина списка
1 len ( a )
2 4
Кафедра Теоретической механики Основы Python: типы данных, операторы 21 / 81
Последовательности
Доступ к элементу списка
1 a = [1 , ’ word ’ , 2 , complex ( 1 , 2 ) ]
Доступ к элементу списка при помощи [ ] скобок.
Первый элемент списка имеет индекс 0:
1 a [ 0 ]
2
3 1
Последний элемент списка из четырёх элементов:
1 a [ 3 ]
2
3 (1+2 j )
Кафедра Теоретической механики Основы Python: типы данных, операторы 22 / 81
Последовательности
Создание списка целых чисел — range
От нуля до максимального, не входящего в список, значения:
1 a = l i s t ( range (10) )
2
3 [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]
От заданного начального значения 2, до конечного значения 16
с шагом 3
1 a = l i s t ( range (2 ,16 ,3) )
2
3 [2 , 5 , 8 , 11 , 14]
Преобразование строки в список символов:
1 l i s t ( ’ cat ’ )
2 [ ’ c ’ , ’ a ’ , ’ t ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 23 / 81
Последовательности
Срезы
1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Первые три элемента
1 a [ 0 : 4 ]
2 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ ]
Чётные элементы списка
1 a [ : : 2 ]
2 [ ’Венера ’ , ’Марс ’ ]
Обращение последовательности
1 a [ : : − 1 ]
2 [ ’Марс ’ , ’Земля ’ , ’Венера ’ , ’Меркурий ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 24 / 81
Последовательности
Вложенные списки
Элемент списка может быть списком
1 a = [ [ 1 , 2 ] , [3 , 4 , 5] ]
2 a [ 0 ]
3 [ 1 , 2 ]
4
5 a [ 1 ]
6 [3 ,4 ,5 ]
7
8 a [ 1 ] [ 2 ]
9 5
Кафедра Теоретической механики Основы Python: типы данных, операторы 25 / 81
Последовательности
Добавление элемента
1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Добавление элемента в конец списка append
1 a . append ( ’Юпитер ’ )
2 a
3 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ , ’Юпитер ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 26 / 81
Последовательности
Добавление элемента
1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Добавление элемента в конец списка append
1 a . append ( ’Юпитер ’ )
2 a
3 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ , ’Юпитер ’ ]
Вставка элемента в список (insert)
1 a = [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ]
2 a . i n s e r t (2 , ’Земля ’ )
3 a
4 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 26 / 81
Последовательности
Объединение списков. Метод extend
1 p1 = [ ’Меркурий ’ , ’Венера ’ ]
2 p2 = [ ’Земля ’ , ’Марс ’ ]
3
4 p1 . extend ( p2 )
5
6 p1
7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 27 / 81
Последовательности
Объединение списков. Метод extend
1 p1 = [ ’Меркурий ’ , ’Венера ’ ]
2 p2 = [ ’Земля ’ , ’Марс ’ ]
3
4 p1 . extend ( p2 )
5
6 p1
7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Короткий вариант с использованием оператора +=
1 p1 = [ ’Меркурий ’ , ’Венера ’ ]
2 p2 = [ ’Земля ’ , ’Марс ’ ]
3
4 p1+= p2
5
6 p1
7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 27 / 81
Последовательности
Удаление элемента
С использованием оператора del по индексу элемента
1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
2
3 del planets [ 2 ]
4
5 planets
6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 28 / 81
Последовательности
Удаление элемента
С использованием оператора del по индексу элемента
1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
2
3 del planets [ 2 ]
4
5 planets
6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ]
С использованием метода remove по значению элемента
1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
2
3 planets . remove ( ’Земля ’ )
4
5 planets
6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 28 / 81
Последовательности
Метод pop
Метод .pop(i) возвращает и извлекает i-ый элемент списка
1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
2
3 planets . pop ( 2 )
4 ’Земля ’
5
6 planets
7 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 29 / 81
Последовательности
Проверка наличия элемента в списке
Оператор in
1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ]
2
3 ’Марс ’ in planets
4 True
Количество заданных элементов в списке
1 phone = [2 , 3 , 22 , 3 , 22]
2
3 phone . count (22 )
4 2
Кафедра Теоретической механики Основы Python: типы данных, операторы 30 / 81
Строки
Строки
Строка – последовательность символов
1 message = ’ Quid est v e r i t a s ? ’
Первый элемент строки
1 message [ 0 ]
2 ’Q ’
Отсчёт с конца строки
1 message[ −3]
2 ’ a ’
Символы с 5 по 7
1 message [ 5 : 8 ]
2 ’ est ’
Движение в обратном порядке
1 message[−2:−5:−1]
2 ’ sat ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 32 / 81
Строки
Многострочный текст
Для создания много длинного многострочного текста
используются тройные кавычки
1 poem = ’ ’ ’ To be , or not to be− that i s the question :
2 Whether ’ t i s nobler in the mind to s u f f e r
3 The s l i n g s and arrows of outrageous fortune
4 Or to take arms against a sea of troubles ,
5 And by opposing end them . To die− to sleep−
6 No more ; and by a sleep to say we end ’ ’ ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 33 / 81
Строки
Преобразование типов в строку
1 s t r (192.008)
2 ’ 192.008 ’
3
4 s t r (192.36) *2
5 ’ 192.008192.008 ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 34 / 81
Строки
Операции со строками
Сложение
1 a= ’ Quid ’
2 b= ’ est ’
3 a+ ’ ’ +b
4 ’ Quid est ’
Умножение
1 a= ’B ’
2 b= ’ z ’
3 a+b*4
4 ’ Bzzzz ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 35 / 81
Строки
Операции со строками
Разделение строки на список подстрок, разделяемых заданным
символом – метод строка.split(разделитель)
1 a= ’2−12−85−06 ’
2
3 a . s p l i t ( ’− ’ )
4 [ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ]
Обратная операция объединения списка строк выполняется
методом разделитель.join(список)
1 a =[ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ]
2 ’ * ’ . j o i n ( a )
3
4 ’ 2*12*85*06 ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 36 / 81
Строки
Операции со строками
Разделение строки на список подстрок, разделяемых заданным
символом – метод строка.split(разделитель)
1 a= ’2−12−85−06 ’
2
3 a . s p l i t ( ’− ’ )
4 [ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ]
Обратная операция объединения списка строк выполняется
методом разделитель.join(список)
1 a =[ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ]
2 ’ * ’ . j o i n ( a )
3
4 ’ 2*12*85*06 ’
Кафедра Теоретической механики Основы Python: типы данных, операторы 36 / 81
Атомарные и ссылочные типы
Атомарные и ссылочные типы
Атомарные и ссылочные типы
Атомарные типы bool, int, float, complex копируются при
присвоении
1 a = 10
2 b = a
3 b = b + 1
4 p r i n t ( a )
5 10
6 p r i n t ( b )
7 11
Переменная b содержит копию значения a
Кафедра Теоретической механики Основы Python: типы данных, операторы 38 / 81
Атомарные и ссылочные типы
Атомарные и ссылочные типы
Ссылочные типы: списки, строки, кортежи, словари, множества
1 a = [1 ,2 ,3 ,4 ,5]
2 b = a
Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
Атомарные и ссылочные типы
Атомарные и ссылочные типы
Ссылочные типы: списки, строки, кортежи, словари, множества
1 a = [1 ,2 ,3 ,4 ,5]
2 b = a
Заменяем третий элемент списка
1 b [ 2 ] = 0
2 p r i n t ( b )
3 [1 ,3 ,0 ,4 ,5]
Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
Атомарные и ссылочные типы
Атомарные и ссылочные типы
Ссылочные типы: списки, строки, кортежи, словари, множества
1 a = [1 ,2 ,3 ,4 ,5]
2 b = a
Заменяем третий элемент списка
1 b [ 2 ] = 0
2 p r i n t ( b )
3 [1 ,3 ,0 ,4 ,5]
Объект (список), на который ссылается переменная a тоже
изменился
1 p r i n t ( a )
2 [1 ,3 ,0 ,4 ,5]
Переменная b ссылается на тот же объект, что и a.
Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
Атомарные и ссылочные типы
Псевдоним и копия
Переменная b — это имя, которое ссылается на объект в памяти
(list). На этот же объект ссылкается и имя a:
1 a = [1 ,2 ,3 ,4 ,5]
2 b = a
Для того, чтобы создать копию, необходимо явно вызвать
функцию-конструктор list
1 a = [1 ,2 ,3 ,4 ,5]
2 b = l i s t ( a )
3 b [ 0 ] = 0
4 a
5 [1 , 2 , 3 , 4 , 5]
6 b
7 [0 , 2 , 3 , 4 , 5]
Кафедра Теоретической механики Основы Python: типы данных, операторы 40 / 81
Атомарные и ссылочные типы
Изменяемые и неизменяемые типы
Список — изменяемый тип
1 a = [1 ,2 ,3 ,4 ,5]
2 a [ 0 ] = 0
3 p r i n t ( a )
4 [1 ,2 ,0 ,4 ,5]
Строка – неизменяемый тип
1 word = ’мир ’
2 p r i n t ( word [ 1 ] )
и
1 word [ 0 ] = ’ i ’
TypeError: ’str’ object does not support item assignment
Кафедра Теоретической механики Основы Python: типы данных, операторы 41 / 81
Кортежи
Кортежи
Кортеж – неизменяемый список
Кортежи (tuple) – это неизменяемые списки
Кортеж создается перечислением элементов в круглых скобках
1 a = ( 1 , 2 , 3 , 4 , 5 )
или функцией tuple
1 a = tuple ( range ( 5 ) )
2 a
3 (0 , 1 , 2 , 3 , 4)
Кафедра Теоретической механики Основы Python: типы данных, операторы 43 / 81
Кортежи
tuple или list
Кортеж (tuple) – это неизменяемый список (list): удаление и
добавление элементов невозможно
Кортежи “работают” быстрее списков
Кортежи могут использоваться как ключи словаря
Кафедра Теоретической механики Основы Python: типы данных, операторы 44 / 81
Множество (set)
Множество (set)
Множества
Определение
Неупорядоченный набор неповторяющихся элементов
Создание
При помощи функции set
1 s1 = set ( ( 1 , 2 , 3 , 4 , 5 , 6 ) )
2 s2 = set ( ( ’ d ’ , ’ abc ’ ,3 ,4 ,5 ,6) )
Перечисление элементов множества в {} скобках
1 s1 = { ’ d ’ , ’ abc ’ ,3 ,4 ,5 ,6}
Кафедра Теоретической механики Основы Python: типы данных, операторы 46 / 81
Множество (set)
Создание множества
Множество из элементов строки (букв)
1 a= set ( ’окно ’ )
2 p r i n t ( a )
3
4 { ’о ’ , ’к ’ , ’н ’ }
Множество из списка
1 a= set ( [ 1 , 2 , 3 , 4 , 6 , 4 , 6 ] )
2 p r i n t ( a )
3
4 {1 ,2 ,3 ,4 ,6}
Кафедра Теоретической механики Основы Python: типы данных, операторы 47 / 81
Множество (set)
Функции для множеств
1 a= set ( [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] )
Существует ли элемент в множестве - оператор in
1 p r i n t ( ’Юпитер ’ in a )
2 False
3 p r i n t ( ’Марс ’ in a )
4 True
5 p r i n t ( ’Юпитер ’ not in a )
6 True
Кафедра Теоретической механики Основы Python: типы данных, операторы 48 / 81
Множество (set)
Пересечение множеств
A & B или A.intersection(B)
1 a= set ( [ 1 , 2 , 3 , 4 ] )
2 b= set ( [ 3 , 4 , 5 , 6 ] )
Оператор &
1 p r i n t ( a & b )
2
3 {3 , 4}
Метод intersection
1 p r i n t ( a . i n t e r s e c t i o n ( b ) )
2
3 {3 , 4}
A
B
Кафедра Теоретической механики Основы Python: типы данных, операторы 49 / 81
Множество (set)
Объединение множеств
A | B или A.union(B)
1 a= set ( [ 1 , 2 , 3 , 4 ] )
2 b= set ( [ 3 , 4 , 5 , 6 ] )
Оператор |
1 p r i n t ( a | b )
2
3 {1 , 2 , 3 , 4 , 5 , 6}
Метод union
1 p r i n t ( a . union ( b ) )
2
3 {1 , 2 , 3 , 4 , 5 , 6}
A
B
Кафедра Теоретической механики Основы Python: типы данных, операторы 50 / 81
Множество (set)
Разность множеств
Элементы, принадлежащие А, но не принадлежащие В
A - B или A.difference(B)
1 a= set ( [ 1 , 2 , 3 , 4 ] )
2 b= set ( [ 3 , 4 , 5 , 6 ] )
Оператор -
1 p r i n t ( a − b )
2
3 {1 , 2}
Метод difference
1 p r i n t ( a . d i f f e r e n c e ( b ) )
2
3 {1 , 2}
A
B
Кафедра Теоретической механики Основы Python: типы данных, операторы 51 / 81
Множество (set)
Исключающее ИЛИ
Элементы, принадлежащие А или В, но не общие
A ^ B или A.symmetric_difference(B)
1 a= set ( [ 1 , 2 , 3 , 4 ] )
2 b= set ( [ 3 , 4 , 5 , 6 ] )
Оператор ^
1 p r i n t ( a ^ b )
2
3 {1 , 2 , 5 , 6}
Метод symmetric_difference
1 p r i n t ( a . symmetric_difference ( b ) )
2
3 {1 , 2 , 5 , 6}
A
B
A
B
Кафедра Теоретической механики Основы Python: типы данных, операторы 52 / 81
Множество (set)
Подмножество
Все элементы, принадлежащие А, принадлежат В
A <= B или A.issubset(B)
1 a= set ( [ 3 , 4 ] )
2 b= set ( [ 3 , 4 , 5 , 6 ] )
Оператор <=
1 p r i n t ( a <= b )
2
3 True
Метод issubset
1 p r i n t ( a . issubset ( b ) )
2
3 True
Кафедра Теоретической механики Основы Python: типы данных, операторы 53 / 81
Множество (set)
Подмножество
A >= B или A.issuperset(B)
1 a= set ( [ 1 , 2 , 3 , 4 , 5 , 6 ] )
2 b= set ( [ 3 , 4 , 5 , 6 ] )
Оператор >=
1 p r i n t ( a >= b )
2
3 True
Метод issuperset
1 p r i n t ( a . i s s u p e r s e t ( b ) )
2
3 True
Кафедра Теоретической механики Основы Python: типы данных, операторы 54 / 81
Словари (dictionary)
Словари (dictionary)
Словарь (ассоциативный массив)
Определение
Неупорядоченный набор пар: ключ - значение
Создание
При помощи функции dict
1 data =[ [72307 , ’ Bradbury ’ ] , [1701 , ’ Enterp ri se ’ ] ]
2 vessels = d i c t ( data )
Перечисление пар ключ : значение в {} скобках
1 vessels = {72307 : ’ Bradbury ’ , 1701: ’ Enterp rise ’ }
Создание пустого словаря
1 vessels = { }
Кафедра Теоретической механики Основы Python: типы данных, операторы 56 / 81
Словари (dictionary)
Добавление или изменение элемента
1 d i c t i o n a r y [ key ] = value
Если ключ key существует, то соответствующее значение
заменяется value, если ключа в словаре нет, то добавляется
новый элемент
1 vessels [68814] = ’ Prokofiev ’
2 p r i n t ( vessels )
3
4 {72307: ’ Bradbury ’ , 1701: ’ Enterp rise ’ , 68814: ’
Prokofiev ’ }
Кафедра Теоретической механики Основы Python: типы данных, операторы 57 / 81
Словари (dictionary)
Удаление элемента
Оператор del удаляет элемент по ключу
1 p r i n t ( vessels )
2
3 {72307: ’ Bradbury ’ , 1701: ’ Enterp rise ’ , 68814: ’
Prokofiev ’ }
4
5 del vessels [1701]
6
7 p r i n t ( vessels )
8
9 {72307: ’ Bradbury ’ , 68814: ’ Prokofiev ’ }
Кафедра Теоретической механики Основы Python: типы данных, операторы 58 / 81
Словари (dictionary)
Определение значения по ключу
1 klnum = { ” pagh ” : 0 , ”wa” : 1 , ” cha ” : 2 , ” wej ” : 3}
Оператор []
1 p r i n t ( klnum [ ’wa ’ ] )
2 1
3
4 p r i n t ( klnum [ ’ Hut ’ ] )
5 KeyError : ’ Hut ’
Метод get
1 klnum . get ( ’ Hut ’ )
2
3 None
1 klnum . get ( ’ Hut ’ , ’ ??? ’ )
2
3 ???
Кафедра Теоретической механики Основы Python: типы данных, операторы 59 / 81
Словари (dictionary)
Список ключей и значений словаря
1 phone = { ’212−85−06 ’ : ’ P i t e r ’ , ’32−22−23 ’ : ’ TV ’ }
Метод keys() возвращает список ключей словаря:
1 p r i n t ( phone . keys ( ) )
2
3 [ ’212−85−06 ’ , ’32−22−23 ’ ]
Метод values() возвращает список значений словаря:
1 p r i n t ( phone . values ( ) )
2
3 [ ’ P i t e r ’ , ’ TV ’ ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 60 / 81
Словари (dictionary)
Методы словарей
Очистить словарь – clear()
1 d i c t . c l e a r ( )
Создать копию словаря – copy()
1 b = d i c t . copy ( )
Списко пар-кортежей (ключ, значение) – items()
1 phone = { ’212−85−06 ’ : ’ P i t e r ’ , ’32−22−23 ’ : ’ TV ’ }
2 p r i n t ( phone . items ( ) )
3
4 [ ( ’212−85−06 ’ , ’ P i t e r ’ ) , ( ’32−22−23 ’ , ’ TV ’ ) ]
Кафедра Теоретической механики Основы Python: типы данных, операторы 61 / 81
Управляющие конструкции
Управляющие конструкции
IF ... ELSE
1 a=getA ( c )
2 i f a>0 :
3 aDesc= ’ P o s i t i v e value ’
4 else
5 aDesc= ’Non−p o s i t i v e value ’
6 p r i n t ( aDesc )
Кафедра Теоретической механики Основы Python: типы данных, операторы 63 / 81
Управляющие конструкции
Операторы сравнения
равно ==
не равно !=
меньше <
меньше или равно <=
больше >
больше или равно >=
включение in
Составные логические выражения строятся при помощи
операторов
and, or, not
Кафедра Теоретической механики Основы Python: типы данных, операторы 64 / 81
Управляющие конструкции
Логические выражения
1 a = 5
2 a < 0
False
3 a < 10
True
4 a > 0 and a < 10
True
5 a > 0 and not a > 10
True
Кафедра Теоретической механики Основы Python: типы данных, операторы 65 / 81
Управляющие конструкции
IF ... ELIF ... ELSE
1 a=getA ( c )
2 i f a>0 :
3 aDesc= ’ P o s i t i v e value ’
4 e l i f a<0 :
5 aDesc= ’Non−p o s i t i v e value ’
6 else
7 aDesc= ’ Zero value ’
8 p r i n t ( aDesc )
Кафедра Теоретической механики Основы Python: типы данных, операторы 66 / 81
Управляющие конструкции
Цикл FOR
Используется для итераций – движения по элементам
последовательностей:
1 f o r i in [3 ,2 ,1 , ’ s t a r t ! ’ ] :
2 p r i n t ( i )
3
4 3
5 2
6 1
7 s t a r t !
Тело цикла обозначается отступом от положения оператора for
Кафедра Теоретической механики Основы Python: типы данных, операторы 67 / 81
Управляющие конструкции
continue и break
Оператор continue начинает следующий проход цикла, минуя
оставшееся тело цикла
1 f o r i in ’ hello world ’ :
2 i f i == ’ o ’ :
3 continue
4 p r i n t ( i , end= ’ ’ )
hell wrld
Оператор break прерывает выполнение цикла
1 f o r i in ’ hello world ’ :
2 i f i == ’ o ’ :
3 break
4 p r i n t ( i , end= ’ ’ )
hell
Кафедра Теоретической механики Основы Python: типы данных, операторы 68 / 81
Управляющие конструкции
Цикл WHILE
Выполнение тела цикла пока выполняется заданное условие
1 a = 0
2 b = 1
3 while a <50:
4 p r i n t ( a )
5 b = a + b
6 a = b − a
или
1 a , b = 0 ,1
2 while a <50:
3 p r i n t ( a )
4 a , b = b , a+b
0
1
1
2
3
5
8
13
21
34
Кафедра Теоретической механики Основы Python: типы данных, операторы 69 / 81
Управляющие конструкции
Цикл WHILE
1 a , b = 0 ,1
2 while a <50:
3 p r i n t ( a )
4 a , b = b , a+b
5 else :
6 p r i n t ( ’Следующее число фибоначчи больше 50 и равно ’ , a )
Секция else исполняется, если условие цикла перестало
выполняться или не выполнилось ни разу
...
8
13
21
34
Следующее число фибоначчи больше 50 и равно 55
Кафедра Теоретической механики Основы Python: типы данных, операторы 70 / 81
Управляющие конструкции
Цикл WHILE
1 a , b = 0 ,1
2 while a <50:
3 p r i n t ( a )
4 a , b = b , a+b
5 else :
6 p r i n t ( ’Следующее число фибоначчи больше 50 и равно ’ , a )
Секция else исполняется, если условие цикла перестало
выполняться или не выполнилось ни разу
...
8
13
21
34
Следующее число фибоначчи больше 50 и равно 55
Кафедра Теоретической механики Основы Python: типы данных, операторы 70 / 81
Управляющие конструкции
Функция range
Функция используется для генерации последовательностей
range(a,step,b) начиная с a до b (не включая b) с шагом step
1 l i s t ( range (1 ,10 ,2) )
2
3 [1 , 3 , 5 , 7 , 9]
Можно указать только верхнюю границу, не входящую в
последовательность (шаг равен 1):
1 l i s t ( range (10) )
2 [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]
Аргументы функции range целые числа (положительные и
отрицательные)
1 l i s t ( range (−2,−7,−2) )
2 [ −2 , −4, −6]
Кафедра Теоретической механики Основы Python: типы данных, операторы 71 / 81
Управляющие конструкции
Использование функции range в циклах FOR
1 week = [ ’Пн ’ , ’Вт ’ , ’Ср ’ , ’Чт ’ , ’Пт ’ , ’Сб ’ , ’Вс ’ ]
2
3 n = len ( week )
4
5 f o r i in range ( n ) :
6 p r i n t ( ’ { } день недели − { } ’ . format ( i +1 , week [ i ] ) )
7
8 1 день недели − Пн
9 2 день недели − Вт
10 3 день недели − Ср
11 4 день недели − Чт
12 5 день недели − Пт
13 6 день недели − Сб
14 7 день недели − Вс
Кафедра Теоретической механики Основы Python: типы данных, операторы 72 / 81
Задания
Задания
Игра “Жизнь” (автор Дж. Конвей)
1 Дано бесконечное поле на плоскости, разбитое на
квадратные ячейки.
2 Каждая ячейка может быть пустой или занятой клеткой.
3 Каждая ячейка граничит с 9 пустыми или занятыми
ячейками.
4 Клетка умирает если вокруг неё меньше 2 или больше 3
соседей.
5 Клетка рождается в пустой ячейке если вокруг неё ровно 3
соседа (клетки).
6 Рождение и смерть клеток происходит одновременно.
Кафедра Теоретической механики Основы Python: типы данных, операторы 74 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Глайдер
Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
Задания
Задание 1
Координаты “живых” клеток колонии заданы списком пар
координат x и y (список кортежей):
1 c e l l s = [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ]
Напишите программу, которая для заданных координат
определяет занята клетка или свободна:
1 x = 1
2 y = 3
3 . . .
4 . . .
5 p r i n t ( isOccuped )
False
Кафедра Теоретической механики Основы Python: типы данных, операторы 76 / 81
Задания
Задание 2
Координаты “живых” клеток колонии заданы списком пар
координат x и y (список кортежей):
1 c e l l s = [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ]
Напишите программу, которая для заданных координат клетки
поля определяет количество её соседей:
1 x = 1
2 y = 1
3 . . .
4 . . .
5 p r i n t ( neighbors )
Кафедра Теоретической механики Основы Python: типы данных, операторы 77 / 81
Задания
Задание 3
Координаты “живых” клеток колонии заданы списком пар
координат x и y (список кортежей):
1 c e l l s = [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ]
Напишите программу, которая определяет список
неповторяющихся пар координат клеток-соседей колонии,
вместе с клетками колонии:
1 . . .
2 . . .
3 p r i n t ( candidates )
Кафедра Теоретической механики Основы Python: типы данных, операторы 78 / 81
Задания
Задание 4
Координаты “живых” клеток колонии заданы множеством пар
координат x и y (множество кортежей):
1 c e l l s = set ( [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] )
Напишите программу, которая для заданных координат клетки
поля определяет количество её соседей:
1 x = 1
2 y = 1
3 . . .
4 . . .
5 p r i n t ( neighbors )
Кафедра Теоретической механики Основы Python: типы данных, операторы 79 / 81
Задания
Задание 5
Координаты “живых” клеток колонии заданы множеством пар
координат x и y (множество кортежей):
1 c e l l s = set ( [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] )
Напишите программу, которая определяет множество пар
координат клеток-соседей колонии, вместе с клетками колонии:
1 x = 1
2 y = 1
3 . . .
4 . . .
5 p r i n t ( candidates )
Кафедра Теоретической механики Основы Python: типы данных, операторы 80 / 81
Задания
Список источников
1 Простой Python. Современный стиль программирования. —
СПб.: Питер, 2016. — 480 с.: ил. — (Серия «Бестселлеры
O’Reilly»).
2 Python 3 для начинающих https://pythonworld.ru
3 Python documentation https://docs.python.org
Кафедра Теоретической механики Основы Python: типы данных, операторы 81 / 81

Weitere ähnliche Inhalte

Was ist angesagt?

Fonctionnement d’un système d’exploitation
Fonctionnement d’un système d’exploitationFonctionnement d’un système d’exploitation
Fonctionnement d’un système d’exploitation
Imane Bellali
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
pierrepo
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Shellmates
 
Apprentissage supervisé.pdf
Apprentissage supervisé.pdfApprentissage supervisé.pdf
Apprentissage supervisé.pdf
hanamettali
 

Was ist angesagt? (20)

Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Fonctionnement d’un système d’exploitation
Fonctionnement d’un système d’exploitationFonctionnement d’un système d’exploitation
Fonctionnement d’un système d’exploitation
 
pandas - Python Data Analysis
pandas - Python Data Analysispandas - Python Data Analysis
pandas - Python Data Analysis
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
 
Python 学習教材
Python 学習教材Python 学習教材
Python 学習教材
 
Formation python 3
Formation python 3Formation python 3
Formation python 3
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Python_ 3 CheatSheet
Python_ 3 CheatSheetPython_ 3 CheatSheet
Python_ 3 CheatSheet
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Numpy python cheat_sheet
Numpy python cheat_sheetNumpy python cheat_sheet
Numpy python cheat_sheet
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Ficheiros texto
Ficheiros textoFicheiros texto
Ficheiros texto
 
PyTorch under the hood
PyTorch under the hoodPyTorch under the hood
PyTorch under the hood
 
logistic regression with python and R
logistic regression with python and Rlogistic regression with python and R
logistic regression with python and R
 
Apprentissage supervisé.pdf
Apprentissage supervisé.pdfApprentissage supervisé.pdf
Apprentissage supervisé.pdf
 
Introduction to Python Pandas for Data Analytics
Introduction to Python Pandas for Data AnalyticsIntroduction to Python Pandas for Data Analytics
Introduction to Python Pandas for Data Analytics
 
Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdf
 
Tubes.pdf
Tubes.pdfTubes.pdf
Tubes.pdf
 

Andere mochten auch

Andere mochten auch (19)

Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
 
Deployers for nanosatellites
Deployers for nanosatellitesDeployers for nanosatellites
Deployers for nanosatellites
 
Python: Модули и пакеты
Python: Модули и пакетыPython: Модули и пакеты
Python: Модули и пакеты
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.
 
Лекция 6. Классы 1.
Лекция 6. Классы 1.Лекция 6. Классы 1.
Лекция 6. Классы 1.
 
Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.
 
Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Лекция 10. Классы 2.
Лекция 10. Классы 2.Лекция 10. Классы 2.
Лекция 10. Классы 2.
 
Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.
 
Лекция 4. Строки, байты, файлы и ввод/вывод.
 Лекция 4. Строки, байты, файлы и ввод/вывод. Лекция 4. Строки, байты, файлы и ввод/вывод.
Лекция 4. Строки, байты, файлы и ввод/вывод.
 
Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.
 
Лекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GILЛекция 13. Многопоточность и GIL
Лекция 13. Многопоточность и GIL
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.
 

Ähnlich wie Основы языка Питон: типы данных, операторы

Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
Technopark
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
AliyaAringazinova
 
массивы.строки
массивы.строкимассивы.строки
массивы.строки
dasha2012
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
Technopark
 

Ähnlich wie Основы языка Питон: типы данных, операторы (20)

Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
ввод и вывод элементов массива
ввод и вывод элементов массиваввод и вывод элементов массива
ввод и вывод элементов массива
 
стандартная библиотека с++: введение
стандартная библиотека с++: введениестандартная библиотека с++: введение
стандартная библиотека с++: введение
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
PascalABC.NET 2015-2016
PascalABC.NET 2015-2016PascalABC.NET 2015-2016
PascalABC.NET 2015-2016
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
паскаль 10кл 14
паскаль 10кл 14паскаль 10кл 14
паскаль 10кл 14
 
массивы.строки
массивы.строкимассивы.строки
массивы.строки
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
 
Типы данных
Типы данныхТипы данных
Типы данных
 
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
17 pdf -_programmi
17 pdf -_programmi17 pdf -_programmi
17 pdf -_programmi
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 

Mehr von Theoretical mechanics department

On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towing
Theoretical mechanics department
 

Mehr von Theoretical mechanics department (20)

Космический мусор
Космический мусорКосмический мусор
Космический мусор
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Модификация механизма Йо-Йо
Модификация механизма Йо-ЙоМодификация механизма Йо-Йо
Модификация механизма Йо-Йо
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
 
Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754
 
Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust
 
Docking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanismDocking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanism
 
Алгоритмы и языки программирования
Алгоритмы и языки программированияАлгоритмы и языки программирования
Алгоритмы и языки программирования
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
 
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a TetherChaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a Tether
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
 
On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towing
 
Методы решения нелинейных уравнений
Методы решения нелинейных уравненийМетоды решения нелинейных уравнений
Методы решения нелинейных уравнений
 
Наноспутники формата кубсат
Наноспутники формата кубсатНаноспутники формата кубсат
Наноспутники формата кубсат
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
 
Метод Кейна
Метод КейнаМетод Кейна
Метод Кейна
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
 
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
 

Основы языка Питон: типы данных, операторы

  • 1. Основы Python: типы данных, операторы Технологии и языки программирования Юдинцев В. В. Кафедра теоретической механики Самарский университет Версия 10.2016
  • 2. Содержание 1 Синтаксис 2 Основные типы данных 3 Последовательности 4 Строки 5 Атомарные и ссылочные типы 6 Кортежи 7 Множество (set) 8 Словари (dictionary) 9 Управляющие конструкции 10 Задания Кафедра Теоретической механики Основы Python: типы данных, операторы 2 / 81
  • 3. История История https://commons.wikimedia.org Язык Python (Питон или Пайтон) разработан нидерландским программистом Гвидо ван Россумом (Guido van Rossum) Начало разработки: конец 80-х годов 1994 v. 1.0 – 2000 v. 1.6 2000 v. 2.0 – 2010 v. 2.7 2008 v. 3.0 – 2015 v. 3.5 https://www.python.org Кафедра Теоретической механики Основы Python: типы данных, операторы 3 / 81
  • 4. История Особенности языка Интерпретируемый, кроссплатформенный язык Python поддерживает различные парадигмы программирования: модульное программирование объектно-ориентированное программирование функциональное программирование Динамическая сильная типизация Типы переменных определяются во время выполнения программы Поддержка структур данных высокого уровня set, dict Автоматизированная система контроля памяти Кафедра Теоретической механики Основы Python: типы данных, операторы 4 / 81
  • 5. История Среда разработки IDLE https://docs.python.org/3/library/idle.html Простейшая интегрированная среда разработки. Поставляется вместе с Pyhon. PyCharm https://www.jetbrains.com/pycharm/download Anaconda https://www.continuum.io/downloads Python + IDE Spyder с набором библиотек (numpy, scipy, ...) для научных вычислений Кафедра Теоретической механики Основы Python: типы данных, операторы 5 / 81
  • 6.
  • 8. Синтаксис Файл программы, функции В первой или второй строке файла программы, модуля должна быть указана кодировка файла, например, UTF-8 1 # −*− coding : utf −8 −*− или 1251 – кодировка MS Windows 1 # −*− coding : cp1251 −*− Кафедра Теоретической механики Основы Python: типы данных, операторы 8 / 81
  • 9. Синтаксис Логические и физические строки Программа состоит из логических строк Логическая строка состоит из одной или нескольких физических строк Физические строки объединяются в одну логическую при помощи символа 1 i f 1900 < year < 2100 and 1 <= month <= 12 2 and 1 <= day <= 31 and 0 <= hour < 24 : 3 return 1 Выражения в скобках ( ) [ ] { } могут быть записаны в несколько строк без использования символа 1 s t a r s = [ ” V645 Cen ” , ” Alpha Cen A” , ” Alpha Cen B” , 2 ” Barnard ’ s Star ” , ” Wolf 359 ” , ”BD+362147 ” ] Кафедра Теоретической механики Основы Python: типы данных, операторы 9 / 81
  • 10. Синтаксис Имена переменных Буквы в нижнем или верхнем регистре Цифры Нижнее подчёркивание Имена переменных не могут начинаться с цифры 1 a1 = 10 2 a_3 = 20 3 A3 = 7 4 _ab = 9 Кафедра Теоретической механики Основы Python: типы данных, операторы 10 / 81
  • 11. Синтаксис Ключевые слова False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass print break except in raise Эти ключевые слова не могут быть использованы в качестве имен переменных (идентификаторов) Кафедра Теоретической механики Основы Python: типы данных, операторы 11 / 81
  • 12. Синтаксис Комментарии Комментарии начинаются с символа #, если этот символ не является частью строковой константы 1 a = ”Здесь символ # не обозначает начало комментария” Комментарий заканчивается в конце физической стоки 1 # Six nearest s t a r s 2 s t a r s = [ ” V645 Cen ” , ” Alpha Cen A” , ” Alpha Cen B” , 3 ” Barnard ’ s Star ” , ” Wolf 359 ” , ”BD+362147 ” ] Многострочные комментарии* могут записаны в виде безымянной строковой константы 1 ’ ’ ’ 2 T r i p l e quotes are treated as regular s t r i n g s 3 with the exception that they can 4 span multiple l i n e s . 5 ’ ’ ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 12 / 81
  • 14. Основные типы данных Классификация Атомарные bool, int, float, complex Ссылочные list, tuple, str, map, dict, set Изменяемые list, dict, set Неизменяемые tuple, str Кафедра Теоретической механики Основы Python: типы данных, операторы 14 / 81
  • 15. Основные типы данных Булевы переменные 1 a = True 2 b = False 3 4 c = 7>3 5 p r i n t ( c ) 6 True Кафедра Теоретической механики Основы Python: типы данных, операторы 15 / 81
  • 16. Основные типы данных Целые числа 1 a=15687554 Явное преобразование в тип int с отбрасыванием дробной части: 1 b= i n t (10/ 3) 2 3 Размер int ограничен только памятью ЭВМ 1 a=2**1000 2 10715086071862673209484250490600018105614048117055 3 33607443750388370351051124936122493198378815695858 4 12759467291755314682518714528569231404359845775746 5 98574803934567774824230985421074605062371141877954 6 18215304647498358194126739876755916554394607706291 7 4571196477686542167660429831652624386837205668069376 Кафедра Теоретической механики Основы Python: типы данных, операторы 16 / 81
  • 17. Основные типы данных Математические операторы + сложение 2 + 2 = 4 - вычитание 5 - 3 = 2 * умножение 2 * 2 = 4 / деление 7 / 2 = 3.5 // целочисленное деление 7 // 2 = 3 % остаток от деления 7 % 2 = 1 ** возведение в степень 7 ** 2 = 49 Кафедра Теоретической механики Основы Python: типы данных, операторы 17 / 81
  • 18. Основные типы данных Вещественное число (64-bit double precision) В отличии от языков Cи или Паскаль в языке Питон определён только один тип вещественного числа float – 64 битное число double precision в соответствии со стандартом IEEE 754 1 a = 123.1445 Явное преобразование в тип float 1 a = f l o a t ( 3 ) Размер ограничен: 1 a = 3**1000 # 3 в степени 1000 − целое число 2 b = f l o a t ( a ) OverflowError: int too large to convert to float Кафедра Теоретической механики Основы Python: типы данных, операторы 18 / 81
  • 19. Основные типы данных Комплексные числа a = 7 + 3i 1 a = complex ( 7 , 3 ) Вещественная часть 1 p r i n t ( a . rea l ) 2 7.0 Мнимая часть 1 p r i n t ( a . imag ) 2 3.0 Мнимая и вещественная часть комплексного числа имеют тип double Кафедра Теоретической механики Основы Python: типы данных, операторы 19 / 81
  • 21. Последовательности Списки (list) Списки значений создаются при помощи оператора [ ] с перечислением объектов, разделённых запятыми: 1 a = [1 , ’ word ’ , 2 , complex ( 1 , 2 ) ] Длина списка 1 len ( a ) 2 4 Кафедра Теоретической механики Основы Python: типы данных, операторы 21 / 81
  • 22. Последовательности Доступ к элементу списка 1 a = [1 , ’ word ’ , 2 , complex ( 1 , 2 ) ] Доступ к элементу списка при помощи [ ] скобок. Первый элемент списка имеет индекс 0: 1 a [ 0 ] 2 3 1 Последний элемент списка из четырёх элементов: 1 a [ 3 ] 2 3 (1+2 j ) Кафедра Теоретической механики Основы Python: типы данных, операторы 22 / 81
  • 23. Последовательности Создание списка целых чисел — range От нуля до максимального, не входящего в список, значения: 1 a = l i s t ( range (10) ) 2 3 [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] От заданного начального значения 2, до конечного значения 16 с шагом 3 1 a = l i s t ( range (2 ,16 ,3) ) 2 3 [2 , 5 , 8 , 11 , 14] Преобразование строки в список символов: 1 l i s t ( ’ cat ’ ) 2 [ ’ c ’ , ’ a ’ , ’ t ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 23 / 81
  • 24. Последовательности Срезы 1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Первые три элемента 1 a [ 0 : 4 ] 2 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ ] Чётные элементы списка 1 a [ : : 2 ] 2 [ ’Венера ’ , ’Марс ’ ] Обращение последовательности 1 a [ : : − 1 ] 2 [ ’Марс ’ , ’Земля ’ , ’Венера ’ , ’Меркурий ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 24 / 81
  • 25. Последовательности Вложенные списки Элемент списка может быть списком 1 a = [ [ 1 , 2 ] , [3 , 4 , 5] ] 2 a [ 0 ] 3 [ 1 , 2 ] 4 5 a [ 1 ] 6 [3 ,4 ,5 ] 7 8 a [ 1 ] [ 2 ] 9 5 Кафедра Теоретической механики Основы Python: типы данных, операторы 25 / 81
  • 26. Последовательности Добавление элемента 1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Добавление элемента в конец списка append 1 a . append ( ’Юпитер ’ ) 2 a 3 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ , ’Юпитер ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 26 / 81
  • 27. Последовательности Добавление элемента 1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Добавление элемента в конец списка append 1 a . append ( ’Юпитер ’ ) 2 a 3 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ , ’Юпитер ’ ] Вставка элемента в список (insert) 1 a = [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] 2 a . i n s e r t (2 , ’Земля ’ ) 3 a 4 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 26 / 81
  • 28. Последовательности Объединение списков. Метод extend 1 p1 = [ ’Меркурий ’ , ’Венера ’ ] 2 p2 = [ ’Земля ’ , ’Марс ’ ] 3 4 p1 . extend ( p2 ) 5 6 p1 7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 27 / 81
  • 29. Последовательности Объединение списков. Метод extend 1 p1 = [ ’Меркурий ’ , ’Венера ’ ] 2 p2 = [ ’Земля ’ , ’Марс ’ ] 3 4 p1 . extend ( p2 ) 5 6 p1 7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Короткий вариант с использованием оператора += 1 p1 = [ ’Меркурий ’ , ’Венера ’ ] 2 p2 = [ ’Земля ’ , ’Марс ’ ] 3 4 p1+= p2 5 6 p1 7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 27 / 81
  • 30. Последовательности Удаление элемента С использованием оператора del по индексу элемента 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 del planets [ 2 ] 4 5 planets 6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 28 / 81
  • 31. Последовательности Удаление элемента С использованием оператора del по индексу элемента 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 del planets [ 2 ] 4 5 planets 6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] С использованием метода remove по значению элемента 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 planets . remove ( ’Земля ’ ) 4 5 planets 6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 28 / 81
  • 32. Последовательности Метод pop Метод .pop(i) возвращает и извлекает i-ый элемент списка 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 planets . pop ( 2 ) 4 ’Земля ’ 5 6 planets 7 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 29 / 81
  • 33. Последовательности Проверка наличия элемента в списке Оператор in 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 ’Марс ’ in planets 4 True Количество заданных элементов в списке 1 phone = [2 , 3 , 22 , 3 , 22] 2 3 phone . count (22 ) 4 2 Кафедра Теоретической механики Основы Python: типы данных, операторы 30 / 81
  • 35. Строки Строка – последовательность символов 1 message = ’ Quid est v e r i t a s ? ’ Первый элемент строки 1 message [ 0 ] 2 ’Q ’ Отсчёт с конца строки 1 message[ −3] 2 ’ a ’ Символы с 5 по 7 1 message [ 5 : 8 ] 2 ’ est ’ Движение в обратном порядке 1 message[−2:−5:−1] 2 ’ sat ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 32 / 81
  • 36. Строки Многострочный текст Для создания много длинного многострочного текста используются тройные кавычки 1 poem = ’ ’ ’ To be , or not to be− that i s the question : 2 Whether ’ t i s nobler in the mind to s u f f e r 3 The s l i n g s and arrows of outrageous fortune 4 Or to take arms against a sea of troubles , 5 And by opposing end them . To die− to sleep− 6 No more ; and by a sleep to say we end ’ ’ ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 33 / 81
  • 37. Строки Преобразование типов в строку 1 s t r (192.008) 2 ’ 192.008 ’ 3 4 s t r (192.36) *2 5 ’ 192.008192.008 ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 34 / 81
  • 38. Строки Операции со строками Сложение 1 a= ’ Quid ’ 2 b= ’ est ’ 3 a+ ’ ’ +b 4 ’ Quid est ’ Умножение 1 a= ’B ’ 2 b= ’ z ’ 3 a+b*4 4 ’ Bzzzz ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 35 / 81
  • 39. Строки Операции со строками Разделение строки на список подстрок, разделяемых заданным символом – метод строка.split(разделитель) 1 a= ’2−12−85−06 ’ 2 3 a . s p l i t ( ’− ’ ) 4 [ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ] Обратная операция объединения списка строк выполняется методом разделитель.join(список) 1 a =[ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ] 2 ’ * ’ . j o i n ( a ) 3 4 ’ 2*12*85*06 ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 36 / 81
  • 40. Строки Операции со строками Разделение строки на список подстрок, разделяемых заданным символом – метод строка.split(разделитель) 1 a= ’2−12−85−06 ’ 2 3 a . s p l i t ( ’− ’ ) 4 [ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ] Обратная операция объединения списка строк выполняется методом разделитель.join(список) 1 a =[ ’ 2 ’ , ’ 12 ’ , ’ 85 ’ , ’ 06 ’ ] 2 ’ * ’ . j o i n ( a ) 3 4 ’ 2*12*85*06 ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 36 / 81
  • 42. Атомарные и ссылочные типы Атомарные и ссылочные типы Атомарные типы bool, int, float, complex копируются при присвоении 1 a = 10 2 b = a 3 b = b + 1 4 p r i n t ( a ) 5 10 6 p r i n t ( b ) 7 11 Переменная b содержит копию значения a Кафедра Теоретической механики Основы Python: типы данных, операторы 38 / 81
  • 43. Атомарные и ссылочные типы Атомарные и ссылочные типы Ссылочные типы: списки, строки, кортежи, словари, множества 1 a = [1 ,2 ,3 ,4 ,5] 2 b = a Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
  • 44. Атомарные и ссылочные типы Атомарные и ссылочные типы Ссылочные типы: списки, строки, кортежи, словари, множества 1 a = [1 ,2 ,3 ,4 ,5] 2 b = a Заменяем третий элемент списка 1 b [ 2 ] = 0 2 p r i n t ( b ) 3 [1 ,3 ,0 ,4 ,5] Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
  • 45. Атомарные и ссылочные типы Атомарные и ссылочные типы Ссылочные типы: списки, строки, кортежи, словари, множества 1 a = [1 ,2 ,3 ,4 ,5] 2 b = a Заменяем третий элемент списка 1 b [ 2 ] = 0 2 p r i n t ( b ) 3 [1 ,3 ,0 ,4 ,5] Объект (список), на который ссылается переменная a тоже изменился 1 p r i n t ( a ) 2 [1 ,3 ,0 ,4 ,5] Переменная b ссылается на тот же объект, что и a. Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
  • 46. Атомарные и ссылочные типы Псевдоним и копия Переменная b — это имя, которое ссылается на объект в памяти (list). На этот же объект ссылкается и имя a: 1 a = [1 ,2 ,3 ,4 ,5] 2 b = a Для того, чтобы создать копию, необходимо явно вызвать функцию-конструктор list 1 a = [1 ,2 ,3 ,4 ,5] 2 b = l i s t ( a ) 3 b [ 0 ] = 0 4 a 5 [1 , 2 , 3 , 4 , 5] 6 b 7 [0 , 2 , 3 , 4 , 5] Кафедра Теоретической механики Основы Python: типы данных, операторы 40 / 81
  • 47. Атомарные и ссылочные типы Изменяемые и неизменяемые типы Список — изменяемый тип 1 a = [1 ,2 ,3 ,4 ,5] 2 a [ 0 ] = 0 3 p r i n t ( a ) 4 [1 ,2 ,0 ,4 ,5] Строка – неизменяемый тип 1 word = ’мир ’ 2 p r i n t ( word [ 1 ] ) и 1 word [ 0 ] = ’ i ’ TypeError: ’str’ object does not support item assignment Кафедра Теоретической механики Основы Python: типы данных, операторы 41 / 81
  • 49. Кортежи Кортеж – неизменяемый список Кортежи (tuple) – это неизменяемые списки Кортеж создается перечислением элементов в круглых скобках 1 a = ( 1 , 2 , 3 , 4 , 5 ) или функцией tuple 1 a = tuple ( range ( 5 ) ) 2 a 3 (0 , 1 , 2 , 3 , 4) Кафедра Теоретической механики Основы Python: типы данных, операторы 43 / 81
  • 50. Кортежи tuple или list Кортеж (tuple) – это неизменяемый список (list): удаление и добавление элементов невозможно Кортежи “работают” быстрее списков Кортежи могут использоваться как ключи словаря Кафедра Теоретической механики Основы Python: типы данных, операторы 44 / 81
  • 52. Множество (set) Множества Определение Неупорядоченный набор неповторяющихся элементов Создание При помощи функции set 1 s1 = set ( ( 1 , 2 , 3 , 4 , 5 , 6 ) ) 2 s2 = set ( ( ’ d ’ , ’ abc ’ ,3 ,4 ,5 ,6) ) Перечисление элементов множества в {} скобках 1 s1 = { ’ d ’ , ’ abc ’ ,3 ,4 ,5 ,6} Кафедра Теоретической механики Основы Python: типы данных, операторы 46 / 81
  • 53. Множество (set) Создание множества Множество из элементов строки (букв) 1 a= set ( ’окно ’ ) 2 p r i n t ( a ) 3 4 { ’о ’ , ’к ’ , ’н ’ } Множество из списка 1 a= set ( [ 1 , 2 , 3 , 4 , 6 , 4 , 6 ] ) 2 p r i n t ( a ) 3 4 {1 ,2 ,3 ,4 ,6} Кафедра Теоретической механики Основы Python: типы данных, операторы 47 / 81
  • 54. Множество (set) Функции для множеств 1 a= set ( [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] ) Существует ли элемент в множестве - оператор in 1 p r i n t ( ’Юпитер ’ in a ) 2 False 3 p r i n t ( ’Марс ’ in a ) 4 True 5 p r i n t ( ’Юпитер ’ not in a ) 6 True Кафедра Теоретической механики Основы Python: типы данных, операторы 48 / 81
  • 55. Множество (set) Пересечение множеств A & B или A.intersection(B) 1 a= set ( [ 1 , 2 , 3 , 4 ] ) 2 b= set ( [ 3 , 4 , 5 , 6 ] ) Оператор & 1 p r i n t ( a & b ) 2 3 {3 , 4} Метод intersection 1 p r i n t ( a . i n t e r s e c t i o n ( b ) ) 2 3 {3 , 4} A B Кафедра Теоретической механики Основы Python: типы данных, операторы 49 / 81
  • 56. Множество (set) Объединение множеств A | B или A.union(B) 1 a= set ( [ 1 , 2 , 3 , 4 ] ) 2 b= set ( [ 3 , 4 , 5 , 6 ] ) Оператор | 1 p r i n t ( a | b ) 2 3 {1 , 2 , 3 , 4 , 5 , 6} Метод union 1 p r i n t ( a . union ( b ) ) 2 3 {1 , 2 , 3 , 4 , 5 , 6} A B Кафедра Теоретической механики Основы Python: типы данных, операторы 50 / 81
  • 57. Множество (set) Разность множеств Элементы, принадлежащие А, но не принадлежащие В A - B или A.difference(B) 1 a= set ( [ 1 , 2 , 3 , 4 ] ) 2 b= set ( [ 3 , 4 , 5 , 6 ] ) Оператор - 1 p r i n t ( a − b ) 2 3 {1 , 2} Метод difference 1 p r i n t ( a . d i f f e r e n c e ( b ) ) 2 3 {1 , 2} A B Кафедра Теоретической механики Основы Python: типы данных, операторы 51 / 81
  • 58. Множество (set) Исключающее ИЛИ Элементы, принадлежащие А или В, но не общие A ^ B или A.symmetric_difference(B) 1 a= set ( [ 1 , 2 , 3 , 4 ] ) 2 b= set ( [ 3 , 4 , 5 , 6 ] ) Оператор ^ 1 p r i n t ( a ^ b ) 2 3 {1 , 2 , 5 , 6} Метод symmetric_difference 1 p r i n t ( a . symmetric_difference ( b ) ) 2 3 {1 , 2 , 5 , 6} A B A B Кафедра Теоретической механики Основы Python: типы данных, операторы 52 / 81
  • 59. Множество (set) Подмножество Все элементы, принадлежащие А, принадлежат В A <= B или A.issubset(B) 1 a= set ( [ 3 , 4 ] ) 2 b= set ( [ 3 , 4 , 5 , 6 ] ) Оператор <= 1 p r i n t ( a <= b ) 2 3 True Метод issubset 1 p r i n t ( a . issubset ( b ) ) 2 3 True Кафедра Теоретической механики Основы Python: типы данных, операторы 53 / 81
  • 60. Множество (set) Подмножество A >= B или A.issuperset(B) 1 a= set ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) 2 b= set ( [ 3 , 4 , 5 , 6 ] ) Оператор >= 1 p r i n t ( a >= b ) 2 3 True Метод issuperset 1 p r i n t ( a . i s s u p e r s e t ( b ) ) 2 3 True Кафедра Теоретической механики Основы Python: типы данных, операторы 54 / 81
  • 62. Словари (dictionary) Словарь (ассоциативный массив) Определение Неупорядоченный набор пар: ключ - значение Создание При помощи функции dict 1 data =[ [72307 , ’ Bradbury ’ ] , [1701 , ’ Enterp ri se ’ ] ] 2 vessels = d i c t ( data ) Перечисление пар ключ : значение в {} скобках 1 vessels = {72307 : ’ Bradbury ’ , 1701: ’ Enterp rise ’ } Создание пустого словаря 1 vessels = { } Кафедра Теоретической механики Основы Python: типы данных, операторы 56 / 81
  • 63. Словари (dictionary) Добавление или изменение элемента 1 d i c t i o n a r y [ key ] = value Если ключ key существует, то соответствующее значение заменяется value, если ключа в словаре нет, то добавляется новый элемент 1 vessels [68814] = ’ Prokofiev ’ 2 p r i n t ( vessels ) 3 4 {72307: ’ Bradbury ’ , 1701: ’ Enterp rise ’ , 68814: ’ Prokofiev ’ } Кафедра Теоретической механики Основы Python: типы данных, операторы 57 / 81
  • 64. Словари (dictionary) Удаление элемента Оператор del удаляет элемент по ключу 1 p r i n t ( vessels ) 2 3 {72307: ’ Bradbury ’ , 1701: ’ Enterp rise ’ , 68814: ’ Prokofiev ’ } 4 5 del vessels [1701] 6 7 p r i n t ( vessels ) 8 9 {72307: ’ Bradbury ’ , 68814: ’ Prokofiev ’ } Кафедра Теоретической механики Основы Python: типы данных, операторы 58 / 81
  • 65. Словари (dictionary) Определение значения по ключу 1 klnum = { ” pagh ” : 0 , ”wa” : 1 , ” cha ” : 2 , ” wej ” : 3} Оператор [] 1 p r i n t ( klnum [ ’wa ’ ] ) 2 1 3 4 p r i n t ( klnum [ ’ Hut ’ ] ) 5 KeyError : ’ Hut ’ Метод get 1 klnum . get ( ’ Hut ’ ) 2 3 None 1 klnum . get ( ’ Hut ’ , ’ ??? ’ ) 2 3 ??? Кафедра Теоретической механики Основы Python: типы данных, операторы 59 / 81
  • 66. Словари (dictionary) Список ключей и значений словаря 1 phone = { ’212−85−06 ’ : ’ P i t e r ’ , ’32−22−23 ’ : ’ TV ’ } Метод keys() возвращает список ключей словаря: 1 p r i n t ( phone . keys ( ) ) 2 3 [ ’212−85−06 ’ , ’32−22−23 ’ ] Метод values() возвращает список значений словаря: 1 p r i n t ( phone . values ( ) ) 2 3 [ ’ P i t e r ’ , ’ TV ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 60 / 81
  • 67. Словари (dictionary) Методы словарей Очистить словарь – clear() 1 d i c t . c l e a r ( ) Создать копию словаря – copy() 1 b = d i c t . copy ( ) Списко пар-кортежей (ключ, значение) – items() 1 phone = { ’212−85−06 ’ : ’ P i t e r ’ , ’32−22−23 ’ : ’ TV ’ } 2 p r i n t ( phone . items ( ) ) 3 4 [ ( ’212−85−06 ’ , ’ P i t e r ’ ) , ( ’32−22−23 ’ , ’ TV ’ ) ] Кафедра Теоретической механики Основы Python: типы данных, операторы 61 / 81
  • 69. Управляющие конструкции IF ... ELSE 1 a=getA ( c ) 2 i f a>0 : 3 aDesc= ’ P o s i t i v e value ’ 4 else 5 aDesc= ’Non−p o s i t i v e value ’ 6 p r i n t ( aDesc ) Кафедра Теоретической механики Основы Python: типы данных, операторы 63 / 81
  • 70. Управляющие конструкции Операторы сравнения равно == не равно != меньше < меньше или равно <= больше > больше или равно >= включение in Составные логические выражения строятся при помощи операторов and, or, not Кафедра Теоретической механики Основы Python: типы данных, операторы 64 / 81
  • 71. Управляющие конструкции Логические выражения 1 a = 5 2 a < 0 False 3 a < 10 True 4 a > 0 and a < 10 True 5 a > 0 and not a > 10 True Кафедра Теоретической механики Основы Python: типы данных, операторы 65 / 81
  • 72. Управляющие конструкции IF ... ELIF ... ELSE 1 a=getA ( c ) 2 i f a>0 : 3 aDesc= ’ P o s i t i v e value ’ 4 e l i f a<0 : 5 aDesc= ’Non−p o s i t i v e value ’ 6 else 7 aDesc= ’ Zero value ’ 8 p r i n t ( aDesc ) Кафедра Теоретической механики Основы Python: типы данных, операторы 66 / 81
  • 73. Управляющие конструкции Цикл FOR Используется для итераций – движения по элементам последовательностей: 1 f o r i in [3 ,2 ,1 , ’ s t a r t ! ’ ] : 2 p r i n t ( i ) 3 4 3 5 2 6 1 7 s t a r t ! Тело цикла обозначается отступом от положения оператора for Кафедра Теоретической механики Основы Python: типы данных, операторы 67 / 81
  • 74. Управляющие конструкции continue и break Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла 1 f o r i in ’ hello world ’ : 2 i f i == ’ o ’ : 3 continue 4 p r i n t ( i , end= ’ ’ ) hell wrld Оператор break прерывает выполнение цикла 1 f o r i in ’ hello world ’ : 2 i f i == ’ o ’ : 3 break 4 p r i n t ( i , end= ’ ’ ) hell Кафедра Теоретической механики Основы Python: типы данных, операторы 68 / 81
  • 75. Управляющие конструкции Цикл WHILE Выполнение тела цикла пока выполняется заданное условие 1 a = 0 2 b = 1 3 while a <50: 4 p r i n t ( a ) 5 b = a + b 6 a = b − a или 1 a , b = 0 ,1 2 while a <50: 3 p r i n t ( a ) 4 a , b = b , a+b 0 1 1 2 3 5 8 13 21 34 Кафедра Теоретической механики Основы Python: типы данных, операторы 69 / 81
  • 76. Управляющие конструкции Цикл WHILE 1 a , b = 0 ,1 2 while a <50: 3 p r i n t ( a ) 4 a , b = b , a+b 5 else : 6 p r i n t ( ’Следующее число фибоначчи больше 50 и равно ’ , a ) Секция else исполняется, если условие цикла перестало выполняться или не выполнилось ни разу ... 8 13 21 34 Следующее число фибоначчи больше 50 и равно 55 Кафедра Теоретической механики Основы Python: типы данных, операторы 70 / 81
  • 77. Управляющие конструкции Цикл WHILE 1 a , b = 0 ,1 2 while a <50: 3 p r i n t ( a ) 4 a , b = b , a+b 5 else : 6 p r i n t ( ’Следующее число фибоначчи больше 50 и равно ’ , a ) Секция else исполняется, если условие цикла перестало выполняться или не выполнилось ни разу ... 8 13 21 34 Следующее число фибоначчи больше 50 и равно 55 Кафедра Теоретической механики Основы Python: типы данных, операторы 70 / 81
  • 78. Управляющие конструкции Функция range Функция используется для генерации последовательностей range(a,step,b) начиная с a до b (не включая b) с шагом step 1 l i s t ( range (1 ,10 ,2) ) 2 3 [1 , 3 , 5 , 7 , 9] Можно указать только верхнюю границу, не входящую в последовательность (шаг равен 1): 1 l i s t ( range (10) ) 2 [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] Аргументы функции range целые числа (положительные и отрицательные) 1 l i s t ( range (−2,−7,−2) ) 2 [ −2 , −4, −6] Кафедра Теоретической механики Основы Python: типы данных, операторы 71 / 81
  • 79. Управляющие конструкции Использование функции range в циклах FOR 1 week = [ ’Пн ’ , ’Вт ’ , ’Ср ’ , ’Чт ’ , ’Пт ’ , ’Сб ’ , ’Вс ’ ] 2 3 n = len ( week ) 4 5 f o r i in range ( n ) : 6 p r i n t ( ’ { } день недели − { } ’ . format ( i +1 , week [ i ] ) ) 7 8 1 день недели − Пн 9 2 день недели − Вт 10 3 день недели − Ср 11 4 день недели − Чт 12 5 день недели − Пт 13 6 день недели − Сб 14 7 день недели − Вс Кафедра Теоретической механики Основы Python: типы данных, операторы 72 / 81
  • 81. Задания Игра “Жизнь” (автор Дж. Конвей) 1 Дано бесконечное поле на плоскости, разбитое на квадратные ячейки. 2 Каждая ячейка может быть пустой или занятой клеткой. 3 Каждая ячейка граничит с 9 пустыми или занятыми ячейками. 4 Клетка умирает если вокруг неё меньше 2 или больше 3 соседей. 5 Клетка рождается в пустой ячейке если вокруг неё ровно 3 соседа (клетки). 6 Рождение и смерть клеток происходит одновременно. Кафедра Теоретической механики Основы Python: типы данных, операторы 74 / 81
  • 82. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 83. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 84. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 85. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 86. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 87. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 88. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 89. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 90. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  • 91. Задания Задание 1 Координаты “живых” клеток колонии заданы списком пар координат x и y (список кортежей): 1 c e l l s = [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] Напишите программу, которая для заданных координат определяет занята клетка или свободна: 1 x = 1 2 y = 3 3 . . . 4 . . . 5 p r i n t ( isOccuped ) False Кафедра Теоретической механики Основы Python: типы данных, операторы 76 / 81
  • 92. Задания Задание 2 Координаты “живых” клеток колонии заданы списком пар координат x и y (список кортежей): 1 c e l l s = [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] Напишите программу, которая для заданных координат клетки поля определяет количество её соседей: 1 x = 1 2 y = 1 3 . . . 4 . . . 5 p r i n t ( neighbors ) Кафедра Теоретической механики Основы Python: типы данных, операторы 77 / 81
  • 93. Задания Задание 3 Координаты “живых” клеток колонии заданы списком пар координат x и y (список кортежей): 1 c e l l s = [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] Напишите программу, которая определяет список неповторяющихся пар координат клеток-соседей колонии, вместе с клетками колонии: 1 . . . 2 . . . 3 p r i n t ( candidates ) Кафедра Теоретической механики Основы Python: типы данных, операторы 78 / 81
  • 94. Задания Задание 4 Координаты “живых” клеток колонии заданы множеством пар координат x и y (множество кортежей): 1 c e l l s = set ( [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] ) Напишите программу, которая для заданных координат клетки поля определяет количество её соседей: 1 x = 1 2 y = 1 3 . . . 4 . . . 5 p r i n t ( neighbors ) Кафедра Теоретической механики Основы Python: типы данных, операторы 79 / 81
  • 95. Задания Задание 5 Координаты “живых” клеток колонии заданы множеством пар координат x и y (множество кортежей): 1 c e l l s = set ( [ ( 1 , 1 ) , ( 2 , 1 ) , ( 3 , 1 ) , ( 3 , 2 ) , ( 2 , 3 ) ] ) Напишите программу, которая определяет множество пар координат клеток-соседей колонии, вместе с клетками колонии: 1 x = 1 2 y = 1 3 . . . 4 . . . 5 p r i n t ( candidates ) Кафедра Теоретической механики Основы Python: типы данных, операторы 80 / 81
  • 96. Задания Список источников 1 Простой Python. Современный стиль программирования. — СПб.: Питер, 2016. — 480 с.: ил. — (Серия «Бестселлеры O’Reilly»). 2 Python 3 для начинающих https://pythonworld.ru 3 Python documentation https://docs.python.org Кафедра Теоретической механики Основы Python: типы данных, операторы 81 / 81