Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,037 views

Published on

Презентация к лекции курса "Технологии и языки программирования"

Published in: Education
  • Be the first to comment

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

  1. 1. Основы Python: типы данных, операторы Технологии и языки программирования Юдинцев В. В. Кафедра теоретической механики Самарский университет Версия 10.2016
  2. 2. Содержание 1 Синтаксис 2 Основные типы данных 3 Последовательности 4 Строки 5 Атомарные и ссылочные типы 6 Кортежи 7 Множество (set) 8 Словари (dictionary) 9 Управляющие конструкции 10 Задания Кафедра Теоретической механики Основы Python: типы данных, операторы 2 / 81
  3. 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. 4. История Особенности языка Интерпретируемый, кроссплатформенный язык Python поддерживает различные парадигмы программирования: модульное программирование объектно-ориентированное программирование функциональное программирование Динамическая сильная типизация Типы переменных определяются во время выполнения программы Поддержка структур данных высокого уровня set, dict Автоматизированная система контроля памяти Кафедра Теоретической механики Основы Python: типы данных, операторы 4 / 81
  5. 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. 6. Синтаксис
  7. 7. Синтаксис Файл программы, функции В первой или второй строке файла программы, модуля должна быть указана кодировка файла, например, UTF-8 1 # −*− coding : utf −8 −*− или 1251 – кодировка MS Windows 1 # −*− coding : cp1251 −*− Кафедра Теоретической механики Основы Python: типы данных, операторы 8 / 81
  8. 8. Синтаксис Логические и физические строки Программа состоит из логических строк Логическая строка состоит из одной или нескольких физических строк Физические строки объединяются в одну логическую при помощи символа 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
  9. 9. Синтаксис Имена переменных Буквы в нижнем или верхнем регистре Цифры Нижнее подчёркивание Имена переменных не могут начинаться с цифры 1 a1 = 10 2 a_3 = 20 3 A3 = 7 4 _ab = 9 Кафедра Теоретической механики Основы Python: типы данных, операторы 10 / 81
  10. 10. Синтаксис Ключевые слова 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
  11. 11. Синтаксис Комментарии Комментарии начинаются с символа #, если этот символ не является частью строковой константы 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
  12. 12. Основные типы данных
  13. 13. Основные типы данных Классификация Атомарные bool, int, float, complex Ссылочные list, tuple, str, map, dict, set Изменяемые list, dict, set Неизменяемые tuple, str Кафедра Теоретической механики Основы Python: типы данных, операторы 14 / 81
  14. 14. Основные типы данных Булевы переменные 1 a = True 2 b = False 3 4 c = 7>3 5 p r i n t ( c ) 6 True Кафедра Теоретической механики Основы Python: типы данных, операторы 15 / 81
  15. 15. Основные типы данных Целые числа 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
  16. 16. Основные типы данных Математические операторы + сложение 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
  17. 17. Основные типы данных Вещественное число (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
  18. 18. Основные типы данных Комплексные числа 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
  19. 19. Последовательности
  20. 20. Последовательности Списки (list) Списки значений создаются при помощи оператора [ ] с перечислением объектов, разделённых запятыми: 1 a = [1 , ’ word ’ , 2 , complex ( 1 , 2 ) ] Длина списка 1 len ( a ) 2 4 Кафедра Теоретической механики Основы Python: типы данных, операторы 21 / 81
  21. 21. Последовательности Доступ к элементу списка 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
  22. 22. Последовательности Создание списка целых чисел — 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
  23. 23. Последовательности Срезы 1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Первые три элемента 1 a [ 0 : 4 ] 2 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ ] Чётные элементы списка 1 a [ : : 2 ] 2 [ ’Венера ’ , ’Марс ’ ] Обращение последовательности 1 a [ : : − 1 ] 2 [ ’Марс ’ , ’Земля ’ , ’Венера ’ , ’Меркурий ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 24 / 81
  24. 24. Последовательности Вложенные списки Элемент списка может быть списком 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
  25. 25. Последовательности Добавление элемента 1 a = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Добавление элемента в конец списка append 1 a . append ( ’Юпитер ’ ) 2 a 3 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ , ’Юпитер ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 26 / 81
  26. 26. Последовательности Добавление элемента 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
  27. 27. Последовательности Объединение списков. Метод extend 1 p1 = [ ’Меркурий ’ , ’Венера ’ ] 2 p2 = [ ’Земля ’ , ’Марс ’ ] 3 4 p1 . extend ( p2 ) 5 6 p1 7 [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 27 / 81
  28. 28. Последовательности Объединение списков. Метод 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
  29. 29. Последовательности Удаление элемента С использованием оператора del по индексу элемента 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 del planets [ 2 ] 4 5 planets 6 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 28 / 81
  30. 30. Последовательности Удаление элемента С использованием оператора 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
  31. 31. Последовательности Метод pop Метод .pop(i) возвращает и извлекает i-ый элемент списка 1 planets = [ ’Меркурий ’ , ’Венера ’ , ’Земля ’ , ’Марс ’ ] 2 3 planets . pop ( 2 ) 4 ’Земля ’ 5 6 planets 7 [ ’Меркурий ’ , ’Венера ’ , ’Марс ’ ] Кафедра Теоретической механики Основы Python: типы данных, операторы 29 / 81
  32. 32. Последовательности Проверка наличия элемента в списке Оператор 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
  33. 33. Строки
  34. 34. Строки Строка – последовательность символов 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
  35. 35. Строки Многострочный текст Для создания много длинного многострочного текста используются тройные кавычки 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
  36. 36. Строки Преобразование типов в строку 1 s t r (192.008) 2 ’ 192.008 ’ 3 4 s t r (192.36) *2 5 ’ 192.008192.008 ’ Кафедра Теоретической механики Основы Python: типы данных, операторы 34 / 81
  37. 37. Строки Операции со строками Сложение 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
  38. 38. Строки Операции со строками Разделение строки на список подстрок, разделяемых заданным символом – метод строка.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
  39. 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. 40. Атомарные и ссылочные типы
  41. 41. Атомарные и ссылочные типы Атомарные и ссылочные типы Атомарные типы 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
  42. 42. Атомарные и ссылочные типы Атомарные и ссылочные типы Ссылочные типы: списки, строки, кортежи, словари, множества 1 a = [1 ,2 ,3 ,4 ,5] 2 b = a Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
  43. 43. Атомарные и ссылочные типы Атомарные и ссылочные типы Ссылочные типы: списки, строки, кортежи, словари, множества 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
  44. 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] Объект (список), на который ссылается переменная a тоже изменился 1 p r i n t ( a ) 2 [1 ,3 ,0 ,4 ,5] Переменная b ссылается на тот же объект, что и a. Кафедра Теоретической механики Основы Python: типы данных, операторы 39 / 81
  45. 45. Атомарные и ссылочные типы Псевдоним и копия Переменная 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
  46. 46. Атомарные и ссылочные типы Изменяемые и неизменяемые типы Список — изменяемый тип 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
  47. 47. Кортежи
  48. 48. Кортежи Кортеж – неизменяемый список Кортежи (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
  49. 49. Кортежи tuple или list Кортеж (tuple) – это неизменяемый список (list): удаление и добавление элементов невозможно Кортежи “работают” быстрее списков Кортежи могут использоваться как ключи словаря Кафедра Теоретической механики Основы Python: типы данных, операторы 44 / 81
  50. 50. Множество (set)
  51. 51. Множество (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
  52. 52. Множество (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
  53. 53. Множество (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
  54. 54. Множество (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
  55. 55. Множество (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
  56. 56. Множество (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
  57. 57. Множество (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
  58. 58. Множество (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
  59. 59. Множество (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
  60. 60. Словари (dictionary)
  61. 61. Словари (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
  62. 62. Словари (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
  63. 63. Словари (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
  64. 64. Словари (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
  65. 65. Словари (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
  66. 66. Словари (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
  67. 67. Управляющие конструкции
  68. 68. Управляющие конструкции 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
  69. 69. Управляющие конструкции Операторы сравнения равно == не равно != меньше < меньше или равно <= больше > больше или равно >= включение in Составные логические выражения строятся при помощи операторов and, or, not Кафедра Теоретической механики Основы Python: типы данных, операторы 64 / 81
  70. 70. Управляющие конструкции Логические выражения 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
  71. 71. Управляющие конструкции 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
  72. 72. Управляющие конструкции Цикл 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
  73. 73. Управляющие конструкции 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
  74. 74. Управляющие конструкции Цикл 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
  75. 75. Управляющие конструкции Цикл 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
  76. 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. 77. Управляющие конструкции Функция 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
  78. 78. Управляющие конструкции Использование функции 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
  79. 79. Задания
  80. 80. Задания Игра “Жизнь” (автор Дж. Конвей) 1 Дано бесконечное поле на плоскости, разбитое на квадратные ячейки. 2 Каждая ячейка может быть пустой или занятой клеткой. 3 Каждая ячейка граничит с 9 пустыми или занятыми ячейками. 4 Клетка умирает если вокруг неё меньше 2 или больше 3 соседей. 5 Клетка рождается в пустой ячейке если вокруг неё ровно 3 соседа (клетки). 6 Рождение и смерть клеток происходит одновременно. Кафедра Теоретической механики Основы Python: типы данных, операторы 74 / 81
  81. 81. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  82. 82. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  83. 83. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  84. 84. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  85. 85. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  86. 86. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  87. 87. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  88. 88. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  89. 89. Задания Глайдер Кафедра Теоретической механики Основы Python: типы данных, операторы 75 / 81
  90. 90. Задания Задание 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
  91. 91. Задания Задание 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
  92. 92. Задания Задание 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
  93. 93. Задания Задание 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
  94. 94. Задания Задание 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
  95. 95. Задания Список источников 1 Простой Python. Современный стиль программирования. — СПб.: Питер, 2016. — 480 с.: ил. — (Серия «Бестселлеры O’Reilly»). 2 Python 3 для начинающих https://pythonworld.ru 3 Python documentation https://docs.python.org Кафедра Теоретической механики Основы Python: типы данных, операторы 81 / 81

×