1. Python для фізиків.
Вступ
Луцьк - 2020
Міністерство освіти і науки України
Східноєвропейський національний університет імені Лесі Українки
Кафедра теоретичної та математичної фізики імені А. В. Свідзинського
Вілігурський Олег Миколайович
старший викладач кафедри теоретичної та
математичної фізики імені А. В. Свідзинського
2. Зміст
Що таке Python? 8
Історія 9
Основні переваги 10
Сфера використання 11
Python вміє… 12
Чому Python? 13
Особливості синтаксису Python 14
Приклади використання 15
3. Починаємо! 16
Перша програма 18
Синтаксис 19
Змінні 21
Правила для імен змінних 23
Виведення значень змінних 25
Локальні і глобальні змінні 27
Ключове слово global 29
Типи даних у Python 31
4. Числа 34
Перетворення типів 35
Випадкові числа 36
Текстові (рядкові) дані 38
Рядки як масиви 39
Методи рядкових величин 41
Форматування рядків 45
Символ екранування 46
Булеві (логічні) величини 47
5. Оператори 49
Функції 53
Аргументи функції 55
Директива return 60
Колекції Python (масиви) 61
Списки 62
Копіювання списку 71
Методи списків 77
input. Введення даних 79
6. Умовний оператор if 80
elif 81
else 82
Цикл while 87
Цикл for 90
Функція range 92
Кортежі 96
Словники 103
Робота з файлами 113
8. Що таке Python?
Python – це
інтерпретована об'єктно-
орієнтована мова
програмування високого
рівня зі строгою
динамічною типізацією.
9. Історія
Python розроблений у
1990 році голландським
програмістом Гвідо ван
Россумом.
Названий на честь
британського комедійного
серіалу 70-х років XX ст.
«Повітряний цирк Монті
Пайтона» (Monty Python's
Flying Circus).
10. Основні переваги
чистий синтаксис (для виділення блоків використовують
відступи);
переносимість програм;
велика кількість корисних модулів (включно з модулем для
розробки графічного інтерфейсу);
можливість використання Python в діалоговому режимі (дуже
корисно для експериментування та розв'язання простих
задач);
стандартний дистрибутив має просте, але досить потужне
середовище розробки IDLE;
зручний для розв'язання математичних проблем (має засоби
роботи з комплексними числами, може оперувати з цілими
числами довільної величини, у діалоговому режимі може
використовуватися як потужний калькулятор);
відкритий код.
12. Python вміє:
Python може використовуватись на серверному боці
для створення веб-додатків;
Python можна використовувати з іншим програмним
забезпечення у робочих процесах;
Python може з’єднуватись з базами даних. Він також
може читати і змінювати файли;
Python може використовуватись для обробки великих
масивів даних і виконання комплексних
математичних обчислень;
Python можна використовувати як для швидкого
написання програм-прототипів, так і для кінцевих
програмних продуктів.
13. Чому Python?
Python працює на різних платформах (Windows, Mac,
Linux…);
Python простий синтаксис, схожий до звичайної
англійської мови;
Синтаксис Python дозволяє писати програми з
меншою кількістю рядків, ніж більшість інших мов;
Python виконується інтерпретатором, а значить, код
можна виконувати, як тільки він написаний. Тому
написання прототипів можу бути дуже швидким;
Python підтримує як процедурне програмування, так і
об’єктно-орієнтоване і функціональне.
14. Особливості синтаксису Python
Python був розроблений для читабельності і
має певну схожість з англійською мовою з
впливом математики;
Python використовує нові рядки для
завершення команди, на відміну від інших
мов програмування, які часто використовують
крапку з комою або круглі дужки;
Для визначення області застосування Python
покладається на відступи пробілами;
наприклад, так задаються області циклів,
функцій та класів. Інші мови програмування
часто використовують для цієї мети фігурні
дужки.
15. Приклади використання
Пошукові інструменти Google розроблялись
значною мірою у Python;
Програмна частина Youtube в значній мірі
писалась на Python;
Система peer-to-peer обміну файлами
BitTorrent була розроблена на Python;
Фреймворк веб-розробки Google Apps широко
використовую Python;
Система 3D-моделювання та анімації Maya
використовує Python-скрипти;
Великі фінансові компанії зазвичай
використовують Python при розробці
фінансових додатків.
18. Перша програма
Запустіть IDLE
Створіть файл (Ctrl + N)
Наберіть
print("Hello, World!")
Збережіть під назвою helloworld.py
Run Run Module (F5)
20. Коментарі
У Python не передбачений окремий синтаксис для
багаторядкових коментарів! “Викрутитись” можна
коментуванням кожного рядка або за допомогою потрійних
лапок """ …""" .
Поки рядок не призначений змінній,
Python прочитає код, але проігнорує
його, і ви отримаєте багаторядковий
коментар.
21. Змінні
Змінні є контейнерами для зберігання
значень даних.
На відміну від багатьох інших мов
програмування, Python не має команди
для оголошення змінної.
Змінна створюється в той момент, коли
ви вперше надаєте їй значення.
22. Нема потреби декларувати тип змінної. Змінні навіть можуть
змінювати свій тип після їх призначення.
Рядкові змінні можна оголошувати або за допомогою
одинарних або подвійних лапок:
23. Правила для імен змінних
Ім'я змінної повинно починатися з
літери або символу підкреслення
Ім'я змінної не може починатися з
цифри
Ім'я змінної може містити лише
латинські букви, цифри та підкреслення
(A-z, 0-9 та _)
Імена змінних залежать від регістру
(age, Age і AGE - це три різні змінні)
24. Python дозволяє призначити значення декільком змінним в одному рядку:
Можна, також, надавати одне і те ж значення кільком змінним в одному рядку:
25. Виведення значень змінних
Виводити значення змінних можна
оператором print
Щоб поєднати текст і змінну або додати
змінну до змінної, використовується
символ +:
26. З числами + працює як математичний оператор:
Якщо ви спробуєте поєднати рядок і число, Python видасть вам
помилку:
27. Локальні і глобальні змінні
Змінні, які створюються поза функцією
(як і в усіх наведених вище прикладах),
називають глобальними змінними.
Глобальні змінні можна використовувати
всюди, як усередині функцій, так і поза
ними.
28. Якщо ви створюєте змінну з таким
самим іменем всередині якоїсь функції,
ця змінна буде локальною, вона може
використовуватись тільки всередині цієї
функції. Глобальна змінна з таким
самим іменем залишиться незмінною і з
незмінним значенням.
29. Ключове слово global
Можна створити глобальну змінну
всередині функції, якщо використати
ключове слово global.
Перевірте, що буде, якщо “закоментувати” рядок
global x
30. Ключове слово global
використовується також тоді, коли
всередині функції треба змінити
значення глобальної змінної.
Порівняйте:
31. Типи даних у Python
Вбудовані типи даних:
Рядковий: str
Числові типи: int, float, complex
Послідовності: list, tuple, range
Словники: dict
Набори (Set Types): set, frozenset
Булеві типи: bool
Бінарні типи: bytes, bytearray, memoryview
32. Тип даних будь-якого об'єкта можна
отримати функцією type():
Змінним призначається тип даних при їх
створенні. Приклади:
33. Якщо треба явним чином вказати тип даних, це можна
зробити такими функціями:
34. Числа
У Python є три типи чисел:
int (1, 35656222554887711 , -72522)
float (-35.59, 35e3, 12E4 , -87.7e-10)
complex (3+5j, 1j, -5j, 3e4+5e-1j)
35. Перетворення типів
Перетворювати типи чисел з одного в
інший можна такими методами: int(),
float(), complex()
Зауваження: комплексні числа неможливо перетворювати в будь-який інший тип.
36. Випадкові числа
У Python нема функції random() для
генерування випадкового числа, але у
Python є вбудований модуль random,
який може використовуватися для
створення випадкових чисел.
Будь-який модуль перед використанням
потрібно імпортувати. Наприклад, для
модуля random пишемо рядок:
38. Текстові (рядкові) дані
Рядкові літерали беруться у подвійні
або в одинарні лапки:
'hello' це те саме, що й "hello".
Для багаторядкового тексту слід використати потрійні лапки:
Можна й так:
'''...'''
39. Рядки як масиви
Як і в багатьох інших мовах, у Python з
рядковими величинами можна
працювати як з масивами. Для доступу
до елементу такого масиву можна
використати номер в квадратних
дужках. Нумерація починається з 0.
40. “Нарізка” (slicing) рядкової величини:
Вибираємо символи від позиції 2 до позиції 5 (не включаючи!):
Нумерація символів може вестися від кінця:
Довжину рядка можна отримати функцією len():
Один з аргументів можна опустити:
41. Методи рядкових величин
strip() - видаляє всі пробіли на початку і в кінці:
lower() – повертає рядок в нижньому регістрі:
upper() – повертає рядок в верхньому регістрі:
42. Метод replace() заміняє рядок на інший рядок:
Зауваження. Змінна a при цьому не змінюється!
Метод split() розділяє рядок на підрядки за місцями
розташування сепараторів:
43. Щоб перевірити, чи міститься певний символ чи група
символів у рядку, можна використати ключові слова in
або not in.
Конкатенація (об’єднання) рядків виконується
оператором +:
44. Форматування рядків
Вивчаючи змінні, ми зауважували, що не можна
поєднувати (“додавати”) числа і рядки таким чином:
Буде помилка!
Числа і рядки можна комбінувати за допомогою методу
format().
Цей метод отримує передані аргументи, форматує їх і
поміщає в рядок туди, де знаходяться фігурні дужки {}:
45. Метод format() може мати необмежене число
параметрів, вони поміщаються на місця відповідних
фігурних дужок.
46. Символ екранування
Щоб вставити в текст недопустимі
символи, використовується символ
екранування – .
код результат
' '
n новий рядок
r початок рядка
t табуляція
b Backspace
47. Булеві (логічні) величини
Логічні величини можуть набувати лише
двох значень: True і False
Майже всі величини трактуються
Python’ом як True. А саме:
будь-який рядок є True, крім порожнього
рядка;
будь-яке число є True, крім 0;
будь-який список, кортеж, набір і словник є
True, крім порожніх.
49. Оператори
Арифметичні
оператори:
+ Додавання x + y
- Віднімання x - y
* Множення x * y
/ Ділення x / y
% Ділення за модулем x % y
** Піднесення до степеня x ** y
// Ділення націло x // y
50. Оператори
присвоєння
= x = 3 x = x
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
та інші…
53. Функції
Функція - це блок коду, який запускається
лише тоді, коли він викликається.
Функції можна передавати дані, які
називають параметрами.
Функція може повертати на виході певні
дані.
54. У Python функція визначається за
допомогою ключового слова def, а
викликається за своїм іменем разом з
дужками.
56. За замовчуванням потрібно викликати функцію з
правильною кількістю аргументів. Це означає, що якщо
ваша функція очікує 2 аргументи, вам доведеться
викликати функцію саме з 2 аргументами.
57. Якщо наперед не відомо, скільки аргументів буде
передано функції, перед іменем параметра у визначенні
функції додається *.
Таким чином функція отримує кортеж з аргументів і
може відповідним чином мати доступ до його елементів:
:
59. При визначенні функції їй можна надавати значення
аргументу по замовчуванню. Воно буде використане,
якщо при виклику функції параметр не вказується.
61. Колекції Python (масиви)
У Python є чотири типи колекцій даних
List (cписок) – містить впорядковані дані, які
можна змінювати. Дозволене дублювання
елементів.
Tuple (кортеж) – впорядковані незмінювані
елемени. Дозволене дублювання елементів.
Set (набір) – невпорядкована і неіндексована
колекція, у якій не допускаються дублікати.
Dictionary (словник) - це набір без
впорядкування, з можливістю змін і з
індексацією. Дублікати не допускаються.
62. Списки
List (cписок) – містить впорядковані
дані, які можна змінювати. Дозволене
дублювання елементів.
Списки позначаються квадратними
дужками.
63. Доступ до елемента списку виконується
за його індексом. При цьому допустимі
від’ємні значення індексів (відлік буде
вестить з кінця) і діапазон індексів:
Слід пам’ятати: нумерація починається з 0, а другий
аргумент з діапазону НЕ включається до результуючого
списку.
64. Зміна значення елемента списку:
Перебір елементів списку можна
виконати циклом for:
65. Перевірити наявність елемента у певному
списку можна ключовим словом in
Кількість елементів списку (довжина)
отримується функцією len()
66. Щоб додати до кінця списку новий елемент,
використовується метод append()
Щоб додати новий елемент в довільному місці,
використовується метод insert()
67. Видалення елементів зі списку
Метод remove() видаляє елемент з
певним значенням:
Якщо таких кілька, видаляється перший з них
68. Метод pop() видаляє елемент із
вказаним індексом (або останній
елемент, якщо індекс не вказаний):
69. Ключове слово del видаляє елемент із
вказаним індексом:
Ключове слово del може також
видалити список повністю:
71. Копіювання списку
Ви не можете скопіювати список, просто
вказавши list2 = list1, оскільки
list2 буде лише посиланням на
list1, і зміни, внесені в list1, будуть
автоматично будуть внесені в list2.
72. Способи створення копії списку:
використання вбудованого для об’єктів
List методу copy():
використання вбудованого методу list():
76. Створення списків конструктором list()
Елементами списків можуть бути будь-які
об’єкти, зокрема, списки.
Питання: що буде виведено такою командою:
print(students[1][1])
77. Методи списків
Метод Опис
append() Додає елемент до кінця списку
clear() Видаляє всі елементи зі списку
copy() Повертає копію списку
count() Повертає кількість елементів із вказаним значенням
extend() Додає елементи списку в кінець існуючого списку
index() Повертає індекс першого елемента з вказаним значенням
insert() Вставляє елемент у вказане положення
pop() Видаляє елемент з вказаного положення
remove() Видаляє елемент з вказаним значенням
reverse() Перевертає порядок елементів списку
sort() Сортує список
79. input(). Введення даних.
Для введення даних користувачем з
клавіатури використовується функція
input().
Введені дані можна надати
змінній.
Всі введені таким чином
користувачем дані мають рядковий
тип.
Python. 3. Functions
80. Умовний оператор if
Умовний оператор дозволяє виконувати
якусь частину програми тільки тоді, коли
виконується певна умова. Найпростіший
приклад використання:
81. elif
Ключове слово elif (скорочення від
else if – “інакше, якщо”) - це спосіб
сказати: "Якщо попередні умови не були
істинними, то спробуйте цю умову".
84. Коротка форма оператора if
Якщо після виконання умови має виконуватись лише
одна команда, можна помістити її в тому ж рядку, що й
оператор if.
Коротка форма if-else
Це так званий тернарний вираз для if-else
87. Цикл while
У циклі while ми можемо виконувати
набір команд доти, доки виконується
певна умова.
Зауваження: цикл while вимагає, щоб відповідні змінні наперед
створені; в цьому прикладі нам потрібно визначити змінну
індексування i, якій ми надали значення 1.
Якщо опустити операцію збільшення i, цикл триватиме вічно.
Python. 5
88. Команди break і continue
break дозволяє перервати цикл, навіть коли умова ще
виконується:
continue дозволяє “перестрибнути” поточну ітерацію, і
продовжити цикл:
90. Цикл for
Цикл for використовується для перебору
певної послідовності (тобто списку,
кортежу, словника, набору або рядка).
91. Команди break і continue
break дозволяє перервати цикл до того, як будуть
перебрані усі елементи:
continue дозволяє “перестрибнути” поточну ітерацію, і
продовжити перебір далі:
92. Функція range
Функція range() повертає послідовність чисел,
починаючи з 0 (за замовчуванням) з кроком на 1
(за замовчуванням) і закінчуючи вказаним
числом.
Синтаксис:
range(start, stop, step)
Параметри:
start Опціональний. Ціле число. Початок діапазону. За замовч. 0.
stop Обов’язковий. Ціле число. Кінець діапазону.
step Опціональний. Ціле число. Крок діапазону. За замовч. 1.
96. Кортежі
Кортеж у Python – це впорядкований набір
величин, які не можна змінювати. Захист
від змін може збільшити швидкість
виконання програми, крім того, це є
“захистом від дурня”.
Кортеж поміщається в круглі дужки:
97. Доступ до елементів кортежу здійснюється через їх
індекси (в квадратних дужках).
Допускається нумерація з кінця (від’ємний індекс) і
діапазон індексів.
Приклади:
99. Кортеж з одного елемента
Одноелементний кортеж (фактично – константу) можна
створити так:
Обов’язкова кома після елемента! Інакше це не
сприйматиметься як кортеж.
100. Операції з кортежами
З кортежами допустимі ті операції, що й зі списками,
якщо вони не передбачають змін кортежу:
- можна робити перебір елементів у циклі for;
- перевірка наявності у кортежі ключовим словом in;
- визначення числа елементів методом len();
- об’єднання кортежів оператором +;
- повторення кортежів певну кількість разів оператором
*;
- метод count() підрахунку елементів з певним
значенням;
- метод index() пошуку елемента з певним значенням
і виведення індексу першого входження.
Приклад – на наступному слайді.
101. A = (1, 2, 3, 4)
B = [] #B - список!
for x in A:
B.append(x+10)
print (B)
B = tuple(B) #тепер B - кортеж
C = A * 2 + B
print ("C = ", C, "Довжина кортежу C -", len(C))
print(11 in C) #перевірка, чи міститься значення 11 в
кортежі
print(C.index(4)) #індекс елемента кортежу зі значенням
4
print(C.count(2)) #підрахунок кількості елементів 2 у
кортежі
102. У вигляді кортежу передаються аргументи при створенні
функції, якщо перед іменем параметра у визначенні
функції додається *.
Таким чином функція отримує кортеж з аргументів і
може відповідним чином мати доступ до його елементів:
103. Словники
Словник – це набір об’єктів, доступ до яких
здійснюється по ключу, а не по індексу. Ключем
може бути будь-який незмінюваний об’єкт,
наприклад, число, рядок чи кортеж. Словники
позначаються фігурними дужками.
104. Доступ до елементів словника – по ключу
(в квадратних дужках) або методом get.
Довжина словника (кількість пар ключ-
значення) отримується так:
print(len(thisdict))
106. Ще один спосіб доступу до значень елементів
словника – метод values():
Перебрати і ключі, і значення можна методом
items():
107. Перевірка існування ключа у словнику
виконується ключовий словом in:
thisdict = {
"name": "Brad",
"surname": "Pitt",
"age": 56
}
print(thisdict)
if "age" in thisdict:
print("У словнику є ключ "age"")
else:
print ("У словнику нема ключа "age"")
if "height" in thisdict:
print("У словнику є ключ "height"")
else:
print ("У словнику нема ключа "height"")
108. Додати до словника нову пару ключ-
значення можна так:
thisdict["ключ"]=значення
109. Способи вилучення записів словника:
метод pop("ключ");
метод popitem() – останній вставлений у
словник запис;
команда del () (del thisdict["ключ"])
110. Команда del може також видалити весь
словник, а метод clear() очищує словник
(без його видалення).
students.clear()
print (students)
del students
print (students) #буде помилка, бо об'єкт students не
існує
111. Копіювання словника
Так dict2 = dict1 не можна, оскільки там ми будемо
мати тільки два посилання на той самий об’єкт. Зміни у
dict1 автоматично внесуть зміни у dict2.
Можна використати метод copy() або команду dict().
113. Робота з файлами
Для обробки інформації зі стороннього
файлу, Python повинен його відкрити
функцією open(). Цій функції
передається два параметри: ім’я файлу і
режим.
Приклад:
f = open("demofile.txt", "w")
Файл demofile.txt відкривається у режимі редагування.
114. Режими відкриття файлу:
"r" - Read – читання. Режим по замовчуванню. Файл
відкривається для читання. Якщо файлу не існує,
функція видає помилку.
"a" - Append – дописування. Файл відкривається для
дописування. Якщо файлу не існує, він створюється.
"w" - Write – вписування. Файл відкривається для
редагування в режимі заміни тексту. Якщо файлу не
існує, він створюється.
"x" - Create – створення. Створюється файл із
вказаним іменем. Якщо такий файл вже існує, функція
видає помилку.
Крім того, можна вказати, що файл відкривається у
бінарному чи текстовому режимі.
"t" - Text (по замовчування) – текстовий режим.
"b" - Binary – бінарний режим (напр. для зображень).
115. Читання файлу
Після того, як файл відкрито і інформацію з нього
передано певній змінній, її можна прочитати методами
read() або readline().
read() по замовчуванню зчитує усю інформацію, а
read(N) – зчитує N символів.
readline()читає один рядок. Наступний рядок можна
прочитати повторним застосуванням цього методу. Можна,
також, задати циклічне виконання методу readline().
Після роботи з файлом його слід закрити методом
close().
116. Приклади:
f = open("eneida.txt", "r")
print(f.read()) #виводиться весь вміст файлу
f.close()
f = open("eneida.txt", "r")
print(f.read(5)) #виводиться 5 перших
символів
f.close()
f = open("eneida.txt", "r")
print(f.readline()) #виводиться перший рядок
print(f.readline()) #виводиться другий рядок
f.close()
f = open("eneida.txt", "r")
for x in f:
print(x) #цикл по всьому файлу рядок за
рядком
f.close()
117. Запис інформації у файл
Коли файл відкритий командою open() і дані з нього
передана ідентифікатору (наприклад, f), запис
інформації в нього можна здійснити методом write().
Дія методу залежить від того, в якому режимі відкрився
файл командою open():
"a" – інформація дописується в кінці файлу;
"w" – існуючий вміст буде замінено на новий.
f = open("demofile2.txt", "a")
txt = """Пішов Мартин у Яготин,
купив собі телятко.
Телятко - хвиць! -
Мартин - беркиць!..
Почнемо знов спочатку...
"""
f.write(txt)
f.close()
Спробуйте запустити файл
кілька разів.
Далі в команді open()
замініть режим "a" на "w"
і ще кілька разів запустіть
файл.
118. Створення файлів
Файл можна створити командою open() у одному з
наступних режимів:
"x" – Створюється файл із вказаним іменем. Якщо
такий файл вже існує, функція видає помилку.
"a" – Якщо файлу із вказаним іменем не існує, він буде
створений.
"w" – Якщо файлу із вказаним іменем не існує, він буде
створений.
Приклад:
f = open("myfile.txt", "x")
Створюється порожній файл з іменем myfile.txt.
120. Додаткові джерела:
python.org/ - офіційний сайт з програмним
забезпеченням і документацією;
w3schools.com/python/ - Python Tutorial
(теоретичний матеріал, приклади, вправи);
practicepython.org/ - Practice Python (вправи з
розв’язками);
edabit.com/ - Edabit (інтерактивні завдання з
розв’язками);
pythoner.name/ - документація, онлайн-
підручник;
opentechschool.github.io/ - Python for Beginners.