Рубрики
Raspberry Pi

python введение

python 2.7 — 3.x:

Python - один из любимых языков программирования для pi у пользователей

IDLE:

IDLE -  среда разработки
IDLE 3 - на рабочем столе IDLE для pi на рабочем столе ( rasbian малинка/programming/python3(IDLE) )

IDLE пример использования:

>>> - интерактивное приглашение
>>> 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")

скрипты:

python run_script.py - выполнение скриптов в bash/cmd

комментарии:

/* комментарий */ - многостраничный комментарий
# - одно строчный комментарий

стиль скриптов:

setup/loop стиль - характерен для arduino и также используется в python
setup() функция - запускается один раз
loop() функция - бесконечный цикл

стандартный шаблон:

# Главный блок программы

# Один раз выполняем setup(), а loop() выполняем по кругу
setup()
while True:
    loop()
#

пример скрипта:

!!! ctrl + c - прервать выполнение 
!!! В python важно следить за пробелами
!!! так же важно использовать заглавные буквы где это требует команды (например True)

# Setup (настройка)
n = 0

# пример первого скрипта
# Loop ( Основной цикл)
while True:
   n = n + 1
   # Оператор % возвращает остаток от деления
   if ((n % 2) == 0):
       print(n) 


пример скрипта:

# Объявляем глобальные переменные
# Переменная 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 шт):

Логика: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 можно считать объектом.
Строки, списки, функции, модули, числа - это все объекты.
Для доступа к объектам используется точка (.)

пример использования зарезервированных слов:


Пример:
>>> myString = "quux"
>>> myString.capitalize()  # сделает первую букву в строке заглавной
'Quux'

Пример:
>>> myList = ['a', 'man', 'a', 'plan', 'a', 'canal']
>>> myList.reverse() # разворот строки
>>> print(myList)
[ 'canal', 'a'............ ну и т.д..

Импорт (подключение библиотек/модулей):

!!! Строки и списки встроены в стандартную библиотеку python (capitalize,reverse) 
!!! Стандартная библиотека всегда включена ее подключать не нужно.
!!! Для подключения дополнительных библиотек используется команда import

import time - добавить библиотеку работы со временем
import time as myTime - добавить библиотеку time и использовать под другим именем myTime
from time import clock - добавить из модуля time только функции clock

Пример импорта(datetime, sleep, time):

# раз в секунду выводим время
# !!! в python все пробелы очень важны. запомни.
from datetime import datetime
from time import sleep

while True:
      now = str(datetime.now())
      print(now)
      sleep(1) 

Запись в файл(datetime, sleep, time, random):

!!!При работе с текстовыми файлами используются строки 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):

# 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:

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 интерфейс   

Установка дополнительных модулей

sudo atp-get install python-serial - вот так ставится большинство модулей
python setup.py install - есть вариант и такой установки
pip - менеджер пакетов из pip-installer.org упрощает установку из PyPI

Отлов ошибок:

IDLE меню debug вам в помощь
Семантическая ошибка - это когда программа написана правильно, но работает не так, как задумывалось.
используйте функцию print() доходит ли до определенной части программы
используйте функцию print() что бы узнать значения переменных
проверяйте пробелы
синтаксическая ошибка могла возникнуть раньше чем показывает интерпретатор
проверяйте глобальные и локальные переменные
проверьте скобки. у всех есть пара?
проверяйте математику 3 + 4 * 2 не равно (3 + 4) * 2
Обратите внимание есть модули code и logging при их осваивании находить ошибки станет еще легче
http://stackoverflow.com - сборник коллективных знаний