python 2.7 — 3.x:
1 |
Python - один из любимых языков программирования для pi у пользователей |
IDLE:
1 2 |
IDLE - среда разработки IDLE 3 - на рабочем столе IDLE для pi на рабочем столе ( rasbian малинка/programming/python3(IDLE) ) |
IDLE пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
>>> - интерактивное приглашение >>> print("hello world!") >>> 3+1+2 - мат действия >>> import math - подгрузили модуль math >>> (1 + math.sqrt(5)) / 2 - мат действия для объявления переменной используется = math.pi - число pi >>> import math >>> radius = 200 >>> radius * 2 * math.pi help() - помощь по команде >>> help("print") - помощь по команде print >>> help("topics") >>> help("keywords") >>> help("modules") |
скрипты:
1 |
python run_script.py - выполнение скриптов в bash/cmd |
комментарии:
1 2 |
/* комментарий */ - многостраничный комментарий # - одно строчный комментарий |
стиль скриптов:
1 2 3 |
setup/loop стиль - характерен для arduino и также используется в python setup() функция - запускается один раз loop() функция - бесконечный цикл |
стандартный шаблон:
1 2 3 4 5 6 7 |
# Главный блок программы # Один раз выполняем setup(), а loop() выполняем по кругу setup() while True: loop() # |
пример скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
!!! ctrl + c - прервать выполнение !!! В python важно следить за пробелами !!! так же важно использовать заглавные буквы где это требует команды (например True) # Setup (настройка) n = 0 # пример первого скрипта # Loop ( Основной цикл) while True: n = n + 1 # Оператор % возвращает остаток от деления if ((n % 2) == 0): print(n) |
пример скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Объявляем глобальные переменные # Переменная n объявлена как глобальная # Это значит, что она доступна из любой части скрипта # global в начале каждой функции важен. Так интерпретатор понимает, # что нужно использовать глобальную переменную n (а не создавать новую) n = 0 # Функции setup # Здесь мы объявили функцию setup() но не выполняем ее def setup(): global n n = 100 # Функции loop # Таким образом объявляем функцию loop() def loop(): global n n = n + 1 if ((n % 2) == 0): print(n) |
зарезервированные слова в python (всего 34 шт):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Логика:if, else, elif, not, or, and, is, True, False, None Циклы: for, in, while, break, as, continue Штатные функции: print, pass, dell Классы, модули, функции: class, def, global, lambda, nonlocal, yield, import, return, from Обработка ошибок: try, except, finally, raise, assert, with Все что не является зарезервированным словом в python можно считать объектом. Строки, списки, функции, модули, числа - это все объекты. Для доступа к объектам используется точка (.) |
пример использования зарезервированных слов:
1 2 3 4 5 6 7 8 9 10 |
Пример: >>> myString = "quux" >>> myString.capitalize() # сделает первую букву в строке заглавной 'Quux' Пример: >>> myList = ['a', 'man', 'a', 'plan', 'a', 'canal'] >>> myList.reverse() # разворот строки >>> print(myList) [ 'canal', 'a'............ ну и т.д.. |
Импорт (подключение библиотек/модулей):
1 2 3 4 5 6 7 |
!!! Строки и списки встроены в стандартную библиотеку python (capitalize,reverse) !!! Стандартная библиотека всегда включена ее подключать не нужно. !!! Для подключения дополнительных библиотек используется команда import import time - добавить библиотеку работы со временем import time as myTime - добавить библиотеку time и использовать под другим именем myTime from time import clock - добавить из модуля time только функции clock |
Пример импорта(datetime, sleep, time):
1 2 3 4 5 6 7 8 9 |
# раз в секунду выводим время # !!! в python все пробелы очень важны. запомни. from datetime import datetime from time import sleep while True: now = str(datetime.now()) print(now) sleep(1) |
Запись в файл(datetime, sleep, time, random):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
!!!При работе с текстовыми файлами используются строки str() !!!int() преобразует строку обратно, в число # Пример записи в файл from datetime import datetime from time import sleep import random log = open("log.txt", "w") i=1 while i in range(5): now = str(datetime.now()) # Генерируем случайное число в диапазоне от нуля до 1024 data = random.randint(0, 1024) log.write(now + " " + str(data) + "\n") print(".") sleep(0.9) log.flush() log.close |
Пример чтение файла и вывод на экран(sys):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# python3 ReadFile.py имя-файла # Открываем и читаем файл import sys if (len(sys.argv) != 2): print("Usage: python ReadFile.py filename") sys.exit() scriptname = sys.argv[0] filename = sys.argv[1] file = open(filename, "r") lines = file.readlines() file.close() for line in lines: print(line) |
Дополнительные модули python:
1 2 3 4 5 6 7 8 9 10 11 12 |
http://pypi.python.org/pypi - наиболее полный список модулей RPi.GPIO - контакты общего назначения - пакет python-rpi.gpio Pygame - фреймворк для игр - пакет python-pygame SimpleCV - простой API компьютерного зрения ( работа с камерой в pi) Scipy - научные вычисления - python-scipy Numpy - вычисления - python-numpy Flask - микрофреймворк веб-разработки - python-flask Requests - http для людей - python-requests PIL - обработка изображений - python-imaging wxPython - GUI-фреймворк - python-wxgtk2.8 PySerial - доступ к последовательным портам - python-serial PyUSB - FTDI-USB интерфейс |
Установка дополнительных модулей
1 2 3 |
sudo atp-get install python-serial - вот так ставится большинство модулей python setup.py install - есть вариант и такой установки pip - менеджер пакетов из pip-installer.org упрощает установку из PyPI |
Отлов ошибок:
1 2 3 4 5 6 7 8 9 10 11 |
IDLE меню debug вам в помощь Семантическая ошибка - это когда программа написана правильно, но работает не так, как задумывалось. используйте функцию print() доходит ли до определенной части программы используйте функцию print() что бы узнать значения переменных проверяйте пробелы синтаксическая ошибка могла возникнуть раньше чем показывает интерпретатор проверяйте глобальные и локальные переменные проверьте скобки. у всех есть пара? проверяйте математику 3 + 4 * 2 не равно (3 + 4) * 2 Обратите внимание есть модули code и logging при их осваивании находить ошибки станет еще легче http://stackoverflow.com - сборник коллективных знаний |