Python. Основи, практика


 
  Анотація   Акценти   Типи даних   Практикум   Приклади з інет

 
 
АНОТАЦІЯ
 
Основна мета сторінки це надати ряд прикладів, які можуть полегшити самостійне опанування основ функціонального програмування на Python. Також треба підкреслити, що поданий матеріал орієнтован на прикладних програмістів, тому ви не зустріните приклади розробки класів ООП (тобто, об'єктно орієнтованого програмування), але екземпляри об'єктів таких класів (типів) будуть застосовуватися постійно.
 

Приклади, що наведені на цій сторінці, готувалися як наочний матеріал до лабораторних робот з вступного курсу Python, але, так склалося, що такий курс мені не довелося читати. Тому поряд з прикладами я буду додавати невеличкі теоретичні відомості і, в першу чергу, такі відомості будуть стосуватися класу задач по ідентифікації технічних об'єктів, тобто, пошуку аналітичної форми табличних функцій

Сьогодні мова програмування Python представлена в великій кількості підручників, тому я не бачу необхідності дублювати основи Python на цій сторінці, але окремі моменти архітектури або корисного програмного коду таки треба буде навести. Для початку дамо посилання на офіційну та довідкову документацію:

  • The Python Tutorial
    Також на веб-сайті Python https://www.python.org/ вільно доступі інтерпретатор Python та широка стандартна бібліотека у вихідному або бінарному вигляді для всіх основних платформ і можуть вільно поширюватися. Цей сайт також містить дистрибутиви та покажчики на багато безкоштовних сторонніх модулів Python, програми та інструменти, а також додаткову документацію.

  • w3schools.com
    Зручний, особливо для почаитківців, підручник з Python що дозволяє виконувати невеличкі приклади on line.

  • Wiki Python     Wiki Python (.pdf)
    Насичений посиланнями wiki-довідник з Python (на українскій мові).

Зауважимо, всі приклади, що наведені на цій сторінці, веріфіковані в операційній системі Windows 10 та версіях Python 3.7 або 3.10

   
Рекомендована література

Як вже зазначалося, сьогоді в інтернеті можна знайти дуже багато сторінок, підручників та інше, що посвячені самостійному опануванню Python. Наведемо окремі з них:

  1. Лутц, Марк. Изучаем Python, том 2, 5-е изд. : Пер. с англ. — СПб. : ООО “Диалектика”, 2020. — 720 с. : ил. том 2 (.pdf)

  2. Лутц, Марк. Изучаем Python, том 1, 5-е изд.: Пер. с англ. — СПб. : ООО “Диалектика”, 2019. — 832 с. : ил. том 1 (.pdf)

  3. Марк Лутц. Изучаем Python, 3-е издание – Пер. с англ. – СПб.: Символ-Плюс, 2009. – 848 с., ил.

  4. Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач, М. Задка, М. Левис, С. Монтаро, Э.С. Реймонд, А.М. Кучлинг, М.-А. Лембург, К.-П. Йи, Д. Ксиллаг, Х.Г. Петрилли, Б.А. Варсав, Дж.К. Ахлстром, Дж. Роскинд, Н. Шеменор, С. Мулендер. Язык программирования Python. / 2001 — 454 c.

  5. Бэрри, Пол. Изучаем программирование на Python / Пол Бэрри ; [пер. с англ. М.А. Райтман]. — Москва : Издательство «Э», 2017. — 624 с.: ил. —(Мировой компьютерный бестселлер).

  6. Саммерфилд М. Программирование на Python 3. Подробное руководство. – Пер. с англ. – СПб.: СимволПлюс, 2009. – 608 с., ил.

  7. Слаткив. Бретт. Секреты Python: 59 рекомендаций по написанию эффективного кода.: Пер. с англ. - М.: ООО ии.д. Вильяме", 2016. - 272 с.: ил. - Парал. тит. англ.

  8. Федоров, Д. Ю. Программирование на языке высокого уровня Python : учебное пособие для прикладного бакалавриата / Д. Ю. Федоров. — М. : Издательство Юрайт, 2018. — 126 с. — (Серия : Бакалавр. Прикладной курс).

  9. Wiki підручник (.pdf)
    Wiki підручник. Як завжди, багато посилань, історичних довідок, коротеньких прикладів, тобто все те що потрібно програмисту початківцю.
 
 
 

  До меню сторінки

 
 
Розділ 1. ВАЖЛИВІ АКЦЕНТИ

1. За замовчуванням, вихідні коди Python вважаються створеними в кодуванні UTF-8. В UTF-8 у рядкових літералах та коментарях можуть бути використано символи більшості мов світу. Якщо вибраний редактор не підтримує файли, закодовані UTF-8 і вимагає застосування будь-якого іншого кодування, припустимо Windows-1251 (ANSI), ви можете першим або другим рядком вхідного файлу написати:

# -*- coding: cp1251 -*-
Наприклад: cp1251_sample.py.
або використати простий конвертор кодування: cp-1251 <--> UTF-8 (.py)

Загальний синтаксис має вигляд:
# -*- coding: encoding -*-
де таблиця кодування encoding залежить від мови та оперційної системи.

2. Зазвичай в системі Windows інтерпритатор Python розміщений в поддиректоріях C:\Users\...\, прописаний в системному PATH та викликається за асоціацією (*.py). Наберіть в системній консолі (cmd.exe) команду PATH для того щоб визначити який файл: py.exe (Python 3.10) або наприклад, python.exe (Python 3.7), буде викликати Python в режимі консольної інтерпритації. Після запуску інтерпритатора на консолі з'являється запрошення (>>>) для вводу та виконання наступної інструкції Python


Після вооду кожної строки натискаємо Enter. Якщо строка продовження відсутня, (тобто ми нічого не вводимо) то Enter ініціює виконання введеного коду.

3. Якщо інтерпритатору в якості першого параметра передати файл програми (інша назва script), то інтерпритатор почне автоматично виконання такої програми. Треба також відзначити що консоль повинна знаходитись на поточній директорії програми, а сама програма повинна включати в себе інструкції, що призупиняють автоматичне завершення після виконання. В самому простому випадку останьою інструкцією можна застосувати наступне:

# Призупинити завершення програми
choice = input(" Press any key to exit ... ")


Така призупинка особо важлива коли ви викликаєте програму на виконання за асоціацією (напиклад, з проводника Windows). Якщо призупинка відсутня, то по завершенню програми консоль автоматично зачиняється і ви не взмозі побачити результати виконання.

4. В пункті (3) зазначена проблема призупинки програми по завершенню. А яким чином тоді програмувати консольні програми що здатні виконувати декілько функцій по вибору користувача? На це питання можна запропанувати наспупне спощене рішення: Наприклад: ConsoleDlg.py.

Академічною мовою, архитектуру такого рішення можна визначити як архитектуру з циклічним очикуванням однієї події (в нашому випадку це цикл while з подією Enter). Але там де одна подія, там можна забажати і декілька різних подій, що приводить нас до ідеї більш розвинутого інтерфейсу ніж просто інтструкція input. Такий інтерфейс согодні реалізується в числених надбудовах над інтерпритатором Python. В нашому випадку, такою надбудовою обрано Tkinter, а єлементами інтерфейсу призначаються віджети, що входять до його складу.

 
 

5. Основним носієм графічного інтерфейсу користувача в Tkinter є вікна. Але більшисть додатків застосовують лише одно вікно з типовим ім'ям root. Для створення такого вікна достатньо виконати наступний код:

# Імпортуємо все що має tkinter
from tkinter import *
# Створюємо об'єкт вікна
root = Tk()
# -----------------------------------------------
# Область розміщення віджетів та програмного коду
# -----------------------------------------------
# Останньою інструкцією викликаємо метод .mainloop(),
# який виконує цикличне очікування подій та маршрутизацію
# зазначених подій на відповідні віджети
root.mainloop()


Детальніше про роботу з Tkinter можна подивитися на сторінці цього сайту:
Python GUI Tkinter

6. Вже декілька раз підкреслювалося, що ми будимо уникати розробки засобів ООП (об'єктно орієнтованого програмування), але використання об'єктів при прикладному програмуванні в Python це звичайна та поширена техніка. В першу чергу це обумовлено тим, що в Python всі екземпляри даних різних типів це класичні об'єкти. Таким чином, єкземпляри даних мають не лише значення, але також забеспечені різноманітними методами, особливо це стосується структурованих даних (str, tuple, set, dict, list).

Наприклад, ця особливість Python дозволяе під час виконання програми получати інформацію про тип того чи іншого об'єкту. Так комбінуючи різні типи даних в складі індексуємої структури список (list), можна, вказуючи відповідні індекси, мати інформацію про тип відповідних елементів (об'єктів) списку:
програма ConsoleTypes.py та відповідна копія екрану


Детальніше про методи об'єктів буде розглянуто нижче у розділі 2 цієї сторінки.

7. В учбових курсах нашої кафедри часто застосовується інтерпритатор системи MATLAB. В цьому сенсі, цікаво порівняти синтаксис та інструментарій мов програмування Python та MATLAB: мatlab_python_xref.pdf.

 

 
  До меню сторінки

 
 
Розділ 2. ТИПИ ДАНИХ

  Знайомство с мовами програмування завжди необхідно починати з даних, з якими буде працювати той чи інший інструментарій мови. Це зручно продемострувати на прикладі абстрактної дії "Різати". Зрозуміло що різати можна хліб, деревену, метал, камінь та інше, але також зрозуміло, що в кожному випадку доведеться застосовувати зовсім різний інструмент та спосіб його використання.

  В системі Python данні це завжди динамічні екземпляри, що створюються відповідно до їх типу як об'єкти. На малюнку, що наведений нижче, червоним кольором наведені вбудовані в Python типи:

  Детальніше про типи даних наведено за посиланнями:

  Python дозволяє визначити тип (класс) кожного створеного об'єкту. Наприклад, якщо окремий об'єкт має ім'я obj то його тип або клас визначаються кодом:

print(type(obj).__name__)
або
print(type(obj))

  Відносно об'єктів, що належать до подібних груп типів або подібних властивостей в типах, Python пропанує вбудовані функції. Нижче представлений перелык таких функцій сортирований за алфавітом:

  Детальніше про вбудовані функції наведено за посиланнями:


 
 

  Як вже зазначалося, данні в Python це завжди динамічні екземпляри, що створюються відповідно до їх типу як об'єкти. Основною особливістю об'єктів є надання кожному об'єкту набору інструментів відповідно до його типу. Такі інструменти мають назву "методи" та являють собою вбудовані, але вже в конкретний тип функції. Виклик метода кодується його ім'ям, що відокремлюється крапкою від ім'я об'єкту. Паприклад:

List01 = [1,2,3]
List02 = List01.copy() # Метод копіювання списку
print(List02)

  Об'єкти, що створені на базі типів boolean, str, а також груп numeric, binary мають відносно просту структуру та досить легко опановуються самостійно. Внятком можна важати хіба що тип str, в якому представлена значна кількість методів для обробки строк. Детальніше з операціями, функціями та методами наведених типів можна ознайомитися за посиланням:


Додатково наведемо документ по методам типу str, який влючає посилання, що демонструють работу таких методів:


  Значно частіше в Python застосовуються об'єкти що конструюються програмістом з допомогою типів list, tuple, dict та set. Особливотю об'єктів таких типів є струкура що включає до себе інші об'єкти. Розгянемо конструктори та методи таких конструйованих об'єктів:

Конструйовані структури даних Python

  На завершення розділу наведемо документ в якому розглянуті окремі особливості конструйованих структур даних Python:

 

 
  До меню сторінки

 
 
Розділ 3. ПРАКТИКУМ

Наведений практикум розроблявся мною як основа для лабораторних робот і вже згодом був віредагованій як набор прикладів. Остання редакція практикума складається з наступних розділів:

ЗМІСТ РОЗДІЛІВ ПРАКТИКУМА

01_Акценти

Дві невеличкі програми, що допомогають організувати діалог в DOS-style консолі

02_Типи_даних

Два підрозділа. В першому наведено документацію відносно методів типа string. В другому наведені програми огляду методів для типів list, tuple, dict, set, додаткова документація та додаткові приклади.

03_Прості_приклади

П'ять підрозділів. Всі підрозділи наводять дуже прості приклади. Але треба зауважити, що рухатися далі має сенс лише тоді, якщо вам все зрозуміло в наведених прикладах.

04_Рівняння

Програми, що наведені в даному підрозділі, реалізують алгоритм знаходження кореня транцендентного рівняння методом дихотомії.

  Увага! В цьому підроздіді вперше в практикумі застосовуються Pithon-файли з розширенням .pyw
  .pyw — це зручний скрипт для запуску додатків .py із відключенням DOS-style вікна консолі в Windows. Скрипт і додатки головного файлу повинні розміщуватися в одній директорії, яка при запуску повинна бути поточной. Скрипт можна також запустити з файлу .cwd, який попередньо встановлює необхідну поточну директорію.Для налаштування скрипта необхідно вказати ім'я файлу додатка в файлі .pyw. Скрипт працює і в Unix: / і \ обробляється переносимо.


 
 

05_Системи

Програми, що наведені в даному підрозділі, реалізують алгоритм знаходження коренів системи лінійних рівнянь за методом Гауса.

06_Інтерполяція

Програми, що наведені в даному підрозділі, реалізують алгоритм інтерполяції табличної функції степеневим рядом. Та найбільш цікавим в цих прикладах, є застосування програми роз'вязання системи лінійних рівнянь, що винесена окремим файлом в директорію Tools.

07_Апроксимація

Програми, що наведені в даному підрозділі, реалізують алгоритм апроксимації табличної функції степеневим рядом. Така задача це основний інструмент ідентифікації об'єктив, тобто, знаходження аналітичного виду характеристик нових датчиків або перехідних функцій, що представлені таблицами експерементів.

08_Текстові файли

Два підрозділа. В першому наведено приклади програм по читанню та запису строк в текстовий файл. В другому наведені програми найпростішого блокноту, що дозволяє читати або записувати текст в кодуванні ANSI або UTF8. Якщо застосовувати такі програми як окремі модулі, то ми маємо зручний інструмент для різноманітних репортерів.

09_Client_Server

Чотири підрозділа. В підрозділах наведено приклади TCP/IP програм серверов (Python реалізація) та клієнтів (Python та Delphi_7 реалізації). Клієнт - сервверна пара з директорії 04_Aircraft показана на наступній копії екрану:

ADD та ADD_DOCUMs

Два підрозділа. Поступово в ці підрозділи будуть завантажуватися нові поповнення. На поточний час дуже рекомендую розібратися с двома документами з підрозділа ADD_DOCUMs:

 

 
  До меню сторінки

 
 
Розділ 4. ПРИКЛАДИ З INTERNET

Сьогодні в інтернеті можна знайти безліч прикладів на довільний смак. В даному випадку, я навіть не намагався зробити якись огляд Python-прикладів з інтернету, але окремі приклади всеж наведу. Чому саме ці приклади? - Тому що опанування підрозділів FileManager та PyEdit_2_1 здатно надати багато корисної інформації, що забеспечить більш професійний рівень ваших розробок.

 
 

В матеріалах сайту я зовсім не приділяв уваги до TURTLE-графіки. Це тому, що ця графіка більш орієнтована на художне, а не технічне використання. Але окремі алгоритми TURTLE-графіки (наприклад, малювання фракталів) могут оказатися корисними. Тому пограйтися з програмами з підрозділу Turtle, я лише зауважу, що окремі програми працюють на версіях Python 3.7 або нижче.

Для найбільш підготовлених програмістів цікаво буде розібратися с нейромережею AlphaZero, яка моделює дуже ефективний алгоритм навчання. Але зразу попереджаю, що прогулянка не буде легкою :)

 

На завершення, бажаю вам всіляких успіхів на шляху самовдосконалення, конструктивізму та удачі!

 

 
 
  До меню сторінки