Хоча Python входить до складу більшості дистрибутивів Linux, на нього часто не звертають уваги при виборі мови для вивчення, але велика популярність Raspberry Pi (RPi) збільшила і популярність Python. Розглянемо застосування Python на RPi.
Чому Python (Пайтон)
З безлічі існуючих мов програмування Python - одна з найлегших мов у вивченні. Він створений в кінці 80-х років XX століття, але з тих пір сильно змінився.
Python - інтерпретована мова програмування (іншими словами, мова сценаріїв, як PHP): вихідний код частинами перетворюється в машинний в процесі виконання спеціальною програмою - інтерпретатором.
Python характеризується зрозумілим синтаксисом. Читати код на цій мові програмування досить легко, тому що в ньому мало допоміжних елементів, а правила мови змушують програмістів робити відступи. Зрозуміло, що добре оформлений текст з малою кількістю відволікаючих елементів читати і розуміти легше.
Python - це повноцінна, можна сказати, універсальна мова програмування. Він підтримує об'єктно-орієнтоване програмування (насправді він і розроблявся як об'єктно-орієнтована мова). Python поширюється безкоштовно на підставі ліцензії GNU (General Public License).
Якщо інтерпретатору Python дати команду import this (імпортувати "сам об'єкт"), то виведеться так званий "Дзен Пайтона", який ілюструє ідеологію і особливості даної мови. Глибоке розуміння цього дзену приходить лише тим, хто зміг освоїти мову Python в повній мірі і отримав досвід практичного програмування.
Відмінність Python від С і що можна програмувати на ньому
Мова програмування Python фактично стартувала як мова сценаріїв для Linux. Python дуже корисна і універсальна мова програмування високого рівня, а легкий для читання синтаксис дозволяє програмістам використовувати менше рядків коду, ніж було б необхідно в таких мовах, як C, або Java.
Порівняйте програму "hello world", написану на C, з аналогічною програмою, написаною на Python:
Програми Python не потрібно компілювати перед їх запуском, як це робите з програмами на C. Проте, необхідно встановити інтерпретатор Python на комп'ютері, щоб запустити ці програми. Інтерпретатор зчитує файл Python і виконує код. Є такі програми, як Py2exe або Pyinstaller, які можуть упакувати код Python в автономні виконувані програми, після чого ви зможете запускати програми Python на комп'ютерах без встановленого інтерпретатора Python.
Python дозволяє автоматизувати такі завдання, як пакетне перейменування і переміщення великих обсягів файлів. IDLE, функції REPL (read - читання, eval - виконання, print - виведення, loop - цикл) можуть бути також використані і в командному рядку. Але є і більш корисні речі, які можете створити з Python.
Програмісти використовують Python для створення:
• веб-додатків
• настільних додатків і утиліт
• спеціальних графічних інтерфейсів
• невеликих баз даних
• 2D ігр
Python має велику колекцію бібліотек, що прискорює процес розробки. Є бібліотеки для всього, про що тільки можете подумати - програмування ігор, виведення графіки, графічний інтерфейс користувача, веб-платформи і наукові обчислення.
Багато з речей (але не всі), які можете зробити в C, можуть бути зроблені і в Python. Обчислення в Python повільніші, ніж в C, але простота у використанні робить Python ідеальним мовою для створення програм і додатків, в яких немає значного обсягу обчислень. Багато з програмістів вважають, що першою мовою програмування варто вивчати саме Python.
Як запустити Python на Raspberry Pi
Запустіть IDLE
який відкриє вікно оболонки Python.
Виберіть Menu > File > New Window.
Напишіть програму, наприклад
#!/usr/bin/python
print ("Hello!")
Потім збережіть цей файл File> Save (або Ctrl + S). Щоб запустити програму, виберіть Run> Run Module (або натисніть F5) і ви повинні побачити "Hello!", яке з'явиться у вікні Python Shell.
Щоб отримати допомогу з використання команди чи функції, наприклад print, введіть в інтерактивному режимі:
help (print)
а для допомоги з використання модулів, наприклад random, введіть:
help ("random")
Python 2 чи 3?
Якщо ви вже спробували запустити Python то, мабуть, звернули увагу, що в меню є піктограми Python 2 і Python 3, і багато користувачів-початківців Python цікавляться з якої версії вони повинні почати. Правильною відповіддю буде щось на кшталт «просто почніть з версії, яка використовує ваш улюблений підручник, а потім просто ознайомтесь з відмінностями».
Але що робити, якщо ви починаєте новий проект і є вибір? В даний час немає «правильних» чи «неправильних» рішень доти і Python 2.7.x, і Python 3.x підтримують бібліотеки, які плануєте використовувати.
Зміна в синтаксисі print, ймовірно, найбільш широко відома відмінність і її варто відзначити: вираз print в Python 2 було замінено функцією print (), а це означає, що ми повинні взяти в дужки об'єкт, який хочемо вивести. В Python 2 немає проблем з додатковими дужками, але в Python 3 виникає SyntaxError, якщо викликаємо функцію print без дужок.
Відмінностей насправді набагато менше, ніж багато хто собі це уявляють. Є чудова презентація, яка пояснює, що нового є в Python 3, чого немає в Python 2.
Крім того, можна портувати код, написаний на Python 2, в код на Python 3. Детальніше в документації про портування.
Створюємо програму без IDLE
Наберемо код в текстовому редакторі (наприклад, в nano). Введіть наступні 4 рядки:
#!/usr/bin/python
print ('Hello. I am a python program.')
name = input("What is your name?")
print ("Hello there, " + name + "!")
Це все. Збережіть файл як hello.py в будь-якому місці. Пропонуємо зберегти його в новоствореній папці python_examples в домашньому каталозі. Цей приклад показує, як просто написати програму на Python. Для запуску програми потрібно зробити її файл виконуваним. Для цього в папці, в якій ви зберегли програму, введіть у терміналі:
chmod +x hello.py
Тепер запустіть її в терміналі:
~/python_examples ./hello.py
Hello. I am a python program.
What is your name? Ferd Burphel
Hello there, Ferd Burphel!
Ось і все. Тепер давайте розглянемо, що робить кожен рядок програми.
#!/usr/bin/python
Цей рядок повідомляє системі, що для запуску програми необхідно використовувати інтерпретатор Python.
print ('Hello. I am a python program.')
Цей рядок просто виводить у вікні терміналу «Hello. I am a python program.».
name = input("What is your name?")
Цей рядок трохи складніший. У ньому дві частини. Перша частина: name = і друга частина: input("What is your name?"). Спочатку розглянемо другу частину. Команда input виводить в терміналі питання («What is your name?») і очікує, поки користувач не надрукує що-небудь (і не натисне {Enter}).
Тепер розглянемо першу частину команди: name =. Вона створює змінну під назвою «name». Змінну можна уявити собі у вигляді ящика. У ящику можна зберігати речі: черевики, частини комп'ютера, папірці, все, що туди влізе. Ящику все одно, що лежить всередині - воно просто лежить там. У нашому прикладі він зберігає те, що ви надрукуєте. Ми надрукували Ferd Burphel. У даній програмі Python просто бере введене значення і зберігає його в ящику «name», щоб надалі використовувати в програмі.
print ("Hello there, " + name + "!")
У цьому рядку ми знову використовуємо функцію print для виведення тексту на екран, в даному випадку для виведення «Hello there,» і того, що зберігається в змінній «name», та знак оклику в кінці. Власне, ми з'єднали три шматка тексту: «Hello there», інформацію в змінній «name» і знак оклику. Перейдемо до роботи над наступним прикладом. Відкрийте вікно терміналу і наберіть:
python
або
python3
для версії Python Python 3.
Ви повинні побачити щось на зразок цього:
~/python_examples$ python
Python 3.5.1 (r252:60911, Oct 5 2015, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Тепер ви перебуваєте в командній оболонці python. Тут можете виконувати дії, але для початку розберемося з тим, що у нас виведено. Насамперед, ви бачите версію інтерпретатора python, в даному випадку 3.2.0. Потім ви бачите повідомлення про те, що для отримання довідки необхідно набрати «help» в командному рядку.
Тепер наберіть:
print (2+2)
і натисніть Enter. ви побачите:
print (2+2)
4
Тепер попрацюємо зі змінними. Введіть:
var = 2+2
Ви побачите, що нічого не відбувається, за винятком того, що Python відобразить запрошення «>>>». Все нормально. Ми доручили Python створити змінну під назвою «var» і покласти в неї результат додавання «2 + 2». Щоб побачити, що тепер знаходиться в змінній «var», введіть:
print (var)
і натисніть Enter.
print (var)
4
Тепер можемо знову використовувати змінну «var» як число 4. Наприклад, так:
print (var * 2)
8
Якщо ми знову наберемо «print (var)», то побачимо наступне:
print (var)
4
Змінна «var» не змінилася. У ній залишилася збережена сума 2 + 2, тобто 4.
Звичайно, дана програма дуже проста і написана для початківців. Давайте розглянемо ще кілька прикладів зі змінними. Введіть в інтерпретаторі:
strng = 'The time has come for all good men to come to the aid of the party!'
print (strng)
The time has come for all good men to come to the aid of the party!
Ви створили змінну під назвою «strng», яка містить значення «The time has come for all good men to come to the aid of the party!». З цього моменту (поки ми працюємо з цим екземпляром інтерпретатора) змінна «strng» буде містити те ж значення, поки ми її не змінимо. Що буде, якщо ми спробуємо помножити цю змінну на 4?
print (strng * 4)
The time has come for all good men to come to the aid of the party!The time has come for all good men to come to the aid of the party!The time has come for all good men to come to the aid of the party!The time has come for all good men to come to the aid of the party!
Сталося не зовсім те, що ви очікували. Python надрукував значення змінної «strng» 4 рази. Чому? Інтерпретатор знав, що змінна «strng» - це рядок, а не число. Неможливо робити математичні операції над рядками.
Якби у нас була змінна під назвою «s», яка містила б значення «4» як показано нижче:
s = '4'
print (s)
4
Здається, що змінна «s» містить число 4, але це не так. Вона містить текстове значення «4». І якщо ми наберемо «print (s * 4), то отримаємо ...
print (s*4)
4444
Знову інтерпретатор знає, що змінна «s» - це рядок, а не число. Він знає це, тому що ми взяли число 4 в одинарні лапки, що означає, що воно є рядком. Ми можемо перевірити це, набравши «print (type(s)), щоб побачити, який тип система привласнила даній змінній:
print (type(s))
<type 'str'>
Переконалися, що змінна має тип «рядок». Якщо хочемо використовувати її як число, то введемо наступне:
print (int(s) * 4)
16
Рядок «s», що містить значення «4», перетворений в число, яке помножене на 4, і отримали 16.
Для виходу в командний рядок у інтерпретаторі Python введіть quit().
IDLE (Integrated DeveLopment Environment)
IDLE має два режими роботи: інтерактивний і сценарний GUI. Звичайно, з GUI працювати зручніше, а інтерактивний подібний до розглянутої вище роботи без IDLE.
Python чутливий до регістру. Існує домовленість, згідно якої назви функцій пишуться малими літерами.
Правильно print ("Hello World") або print (‘Hello World’)
Помилки: Print ("Hello World") або PRINT (‘Hello World’)
Коментарі починаються з символу #. Всі символи правіше нього (якщо # не всередині рядка і це не перший спеціальний рядок коду) утворюють коментарій. Інтерпретатор нечутливий до коментарів. Зверніть увагу на те, що в IDLE коментарі підсвічуються червоним кольором, щоб краще їх було видно.
# Hello World
# Демонструє роботу функції print
print ("Hello World")
input ("Натисни Enter, щоб вийти.")
Виконуючи останній рядок програми input ("Натисни Enter, щоб вийти."), інтерпретатор виводить на екран слова Натисни Enter, щоб вийти і чекає, поки користувач натисне Enter. Після натискання Enter програма зупиняє роботу. Таким способом зручно утримувати вікно консолі відкритим доти, поки користувач не побажає вийти з програми.
Інший символ для завершення рядка при використанні функції print.
За замовчуванням функція print() завершує текст, який виводиться на екран, переходом на новий рядок. Це означає, що виклик print() наступного разу заставить подальший текст відображатися на один рядок нижче. Хоча найчастіше саме цього ми й хочемо, але також не завадила б можливість вручну назначати завершальний символ чи символи. Можемо, наприклад, замість нового рядка визначити пробіл, як завершаючий рядок при виклику функції print(). Це означає, що при виклику наступного print() його рядок виведеться відразу після пробілу замість переводу рядка:
print ("От", end=" ")
print ("він ... ")
# Різні прийоми роботи з рядками
print ("Програма ‘Hello World' 2.0")
print ("Майже такий", "же", "текст")
print ("Але",
"трохи",
"більший")
print ("От", end=" ")
print ( "що ... ")
print (
"""
"""
)
input ("\n\nHaтисни Enter, щоб вийти. ")
Проміжок в потрійних лапках (одинарних чи подвійних) може займати в коді кілька рядків і виводиться на екрані точно в таком ж вигляді, як і вводиться, що дозволяє створювати найпростішу ASCll-rpaфіку (Americaп Staпdard Code for lпformatioп lпterchaпge).
Еsсаре-послідовності в рядках
# Типу подяки
# Зразок застосування еsсаре-послідовностей
print ("\t\t\tТипу подяки")
print ("\t\t\t \\ \\ \\ \\ \\ \\ \\")
print ("\t\t\tрозробнику гри")
print ("\t\t\tMaйклу Доусону")
print ("\t\t\t \\ \\ \\ \\ \\ \\ \\")
print ("\nОкреме дякую хочу сказати: ")
print ("парикмахеру Тарасу з кликухою \'Чудовий\'. який не знає слова \"неможливо \".")
# Звучить системний гучномовець
print ("\a")
input ("\n\nHaтисни Enter, щоб вийти.")
Деякі еsсаре-послідовності працюють передбаченим чином лише тоді, коли програма запускається з операційної системи, а не в IDLE. Такий, зокрема, символ системного динаміка. Допустимо, наприклад, ви написали програму з одного виразу print("\а"). Якщо запустити її в IDLE, на екрані з’явиться квадратик, а комп’ютер збереже мовчання. Але, якщо запустити ту ж саму програму з ОС, тобто двічі клацнути на значку файла, то системний динамік прозвучить, як і повинен.
Зчеплення, або конкатенація рядків - це з’єднання їх разом так, що з двох або кількох отримуємо один. Два рядки можна зчепити за допомогою оператора '+'
Конкатенацію можна розтягнути до безкінечності, використовуючи в програмі в кінці рядка символ продовження рядка ‘\’ (обернений слеш)
Повторення рядків:
print("Тістечка" * 10)
Робота з числами
# Текстові задачі
# Демонструє математичні операції
print ("\nЯкщо четверо пиратів вирішать розділити 107 золотих монет порівно, ")
print ("то скільки цілих монет отримає кожен?")
input ("Щоб дізнатися. натисни Enter." )
print ("107 // 4 =" , 107 // 4)
print ("\nЯкщо ті ж самі чотири пірати розділять ті ж 107 монет із ларчика порівну, ")
print ("тo скільки залишиться нічиїх монет?")
input ("Щоб дізнатися. натисни Enter." )
print ( "107% 4 =" , 107% 4)
input ("\n\nHaтисни Enter, щоб вийти.")
Змінні
# Привiт
# Демонструє використання змiнних
name = "Вася"
print (name)
print ("Привiт, ", name)
input ("\n\nHaтисни Enter, щоб вийти.")
· Ім’я змінної може складатися лише з цифр, букв і знаків підкреслення
· Ім’я змінної не може починатися з цифри
o Ім’я повинне описувати суть (одна літера – лише для тимчасових змінних)
o Будьте послідовними (кілька слів)
o Поважайте звичаї мови (починати з малої літери, не ставити підкреслення першим)
o Стежте за довжиною (не більше 15 символів)
Поняття самодокументованого коду
# Персональний привіт
# Демонструє отримання вводу користувача
name = input ("Привiт. Як тебе звати? ")
print (name)
рrint ("Привiт, ", name)
input ("\n\nHaтисни Enter, щоб вийти.")
# Манiпуляцiя з цитатою
# Демонструє рядковi методи
#Цитата від Томаса Уотсона, який в 1943 р. був директором IBM
quote ="Думаю, що на свiтовому ринку можна буде продати штук п’ять комп’ютерiв."
print ("Первинна цитата: ")
print (quote)
print ("\nВонa ж у верхньому регістрі:")
print (quote.upper())
print ("\nB нижньому регістрі:")
print (quote.lower())
print ("\nЯк заголовок:")
print (quote.title())
print ("\nЗ ма-а-аленькою заміною:")
print (quote.replace("штyк п’ять", "кілька мільйонів"))
print ("\nA вот знову початкова цитата:")
print (quote)
input ("\n\nHaтисни Enter, щоб вийти.")
Правильне використання типів даних
# Підготовка до школи (версія з помилкою)
# Демонструє логічну помилку
print (
"""
Програма підраховує ваші витрати на підготовки до школи.
Цю статистику треба знати, щоб не розтранжирити всі гроші на літній відпочинок.
Введіть суми витрат для всіх статей в гривнях без копійок – не варто бути дріб’язковим.
"""
)
сase = input ('Новий ранець від "Феррачі": ')
books = input ("Підручники: ")
sportswear = input ('Спортивний одяг та взуття від “Puma”: ')
stationery = input ("Олівці, ручки, пенал, зошити: ")
clothing = input ("Шкільна форма: ")
school_breakfast = input ("Оплата обідів за місяць навчання: ")
total = сase + books + sportswear + stationery + clothing + school_breakfast
print ("\nЗагальна сума: ", total)
input ("\n\nHaтисни Enteг, щоб вийти.")
# Підготовка до школи (версія без помилок)
# Демонструє type conversion
print (
"""
Програма підраховує ваші витрати на підготовки до школи.
Цю статистику треба знати, щоб не розтранжирити всі гроші на літній відпочинок.
Введіть суми витрат для всіх статей в гривнях без копійок – не варто бути дріб’язковим.
"""
)
сase = input ('Новий ранець від “Феррачі”: ')
сase = int(сase)
books = int(input ("Підручники: "))
sportswear = int(input ('Спортивний одяг та взуття від “Puma”: '))
stationery = int(input ("Олівці, ручки, пенал, зошити: "))
clothing = int(input ("Шкільна форма: "))
school_breakfast = int(input ("Оплата обідів за місяць навчання: "))
total = сase + books + sportswear + stationery + clothing + school_breakfast
print ("\nЗагальна сума: ", total)
input ("\n\nHaтисни Enteг, щоб вийти.")
Генерування випадкових чисел
# Кості
# Демонструє генерацію випадкових чисел
import random
# Створюємо випадкові числа з діапазону 1 - 6
die1 = random.randint(1, 6)
die2 = random.randrange(6) + 1
total = die1 + die2
print ("При киданні у вас випало ", die1, "і ", die2, "очок, в сумі ", total)
input ("\n\nHaтисни Enter, щоб вийти.")