Tải bản đầy đủ - 0 (trang)
2 Lập trình cho hệ thống sử dụng ngôn ngữ Python và HTML

2 Lập trình cho hệ thống sử dụng ngôn ngữ Python và HTML

Tải bản đầy đủ - 0trang

Khoảng trắng và thụt đầu dòng

Trong Python khoảng trắng rất quan trọng. Chúng ta phân

biệt cách sử dụng dấu khoảng trắng. Khoảng trắng trong dòng đầu

tiên được xem như dấu thụt đầu dòng. Nhưng nếu sử dụng sai thì

sẽ báo lỗi.

Ví dụ như sau:

>>> a = 12

>>> a = 12

File "", line 1

a = 12

IndentationError: unexpected indent

Chú ý: Có một dấu cách đầu tiên gây ra lỗi trong đoạn

chương trình trên, do đó chúng ta cần đặt dấu thụt đầu dòng thích

hợp.

Chúng ta có một số chú ý cho việc sử dụng dấu khoảng trắng

và định danh

Thụt sử dụng 4 khoảng trắng

Không bao giờ kết hợp với dấu cách Tab, hoặc nên thay thế

chúng phù hợp.

Một dòng trống giữa các chức năng giữa.

Hai dòng trống giữa hai lớp.

Có nhiều nơi trong đoạn chương trình mà bạn phải áp dụng

cách dùng dấu cách, ví dụ như:

Add a space after ”,” in dicts, lists, tuples, and argument lists

and after ”:” in dicts.

Spaces around assignments and comparisons (except in

argument list)

No spaces just inside parentheses.

Bình luận là một đoạn văn bản được viết trong chương trình,

chúng được sử dụng để giải thích hoặc chú thích cho người khác



64



hiểu về đoạn code đó. Một đoạn comment bắt đầu bằng dấu “#”,

mọi thứ sau dấu “#” khơng được thực thi trong chương trình.

>>> # Đây là một bình luận

>>> # Dòng tiếp theo sẽ cộng 2 số

>>> a = 12 + 34

>>> print c # Đây cũng là một bình luận

Bình luận giúp cho lập trình viên dễ dàng cải tiến mã nguồn,

ghi chú các chức năng của đoạn code thực hiện, nó có thể là người

viết, ngày viết.

# FIXME -- fix these code later

# TODO -- in future you have to do this

Modules trong Python là các tập tin chưa các hàm được định

nghĩa sẵn, biến cái mà chúng ta có thể sử dụng lại, nó cũng có

đi mở rộng là “.py”. Python đã cung cấp sẵn một số module mặc

định. Chúng ta có thể sử dụng chúng. Để sử dụng chúng ta cần

dùng lệnh import. Ví dụ như sau:

>>> import math

>>> print math.e

2.71828182846

Nếu bạn muốn xóa các biến và bắt đầu trạng thái mới, chọn

Shell rồi chọn Retstart Shell để bắt đầu lại.

Trong Python, các kiểu chuỗi, danh sách, thư viện và thậm

chí là kiểu số đều dược xem là “đối tượng”. Python có thể được

xem như là một bộ sưu tập các thuộc tính và phương thức mà có

thể truy cập vào bằng cách sử dụng một cú pháp đơn giản là dấu

chấm “.”.

Ví dụ:

>>> myString = “quux”

>>> myString.capitalize()

‘Quux’

65



Hoặc sử dụng ngoặc đơn “()” để sắp xếp lại danh sách theo

thứ tự ngược

>>> myList = [‘a’, ‘man’, ‘a’, ‘plan’, ‘a’, ‘canal’]

>>>myList.reverse()

>>> print (myList)

[‘a’, ‘man’, ‘a’, ‘plan’, ‘a’, ‘canal’]

Lưu ý: Cả chuỗi và danh sách được xây dựng trong các thư

viện của thư viện chuẩn có sẵn từ bất kỳ chương trình Python nào.

Trong mỗi trường hợp, các chuỗi và danh sách, thư viện đã xác

định một loạt các chức năng để làm việc với chuỗi và danh sách,

bao gồm cả capitalize() và reverse ().

Một số các thư viện tiêu chuẩn không được cài đặt sẵn và

cần phải nói rõ ràng rằng sẽ sử dụng chúng với lệnh “import”. Để

sử dụng thư viện thời gian từ thư viện chuẩn nhằm truy cập các

chức năng hữu ích để xử lý thời gian, sử dụng:

import time

Có thể đổi tên thư viện trong chương trình bằng cách

import time as myTime

Hoặc sử dụng “from import” để chọn các chức năng từ thư

viện

from time import clock

Đây là một ví dụ ngắn của một tập lệnh Python sử dụng

“time” và các phần tử “datetime” từ thư viện tiêu chuẩn để in thời

gian hiện tại một lần mỗi giây

from datetime import datetime

from time import sleep

while True:

now = str(datetime.now())

print (now)



66



sleep(1)

Chức năng sleep () ngừng việc thực hiện chương trình trong

một giây. Nhận thấy một điều rằng sau khi chạy mã này là thời

gian sẽ trơi mỗi lần một chút.

Đó là vì hai lý do:

- Mã khơng tính đến số lượng thời gian cần để tính.

- Các quy trình khác đang chia sẻ CPU và có thể thực hiện

các chu kỳ từ thực hiện chương trình. Đây là một điều quan trọng

cần nhớ khi lập trình trên Raspberry Pi, khơng thực hiện trong một

môi trường thời gian thực.

Nếu đang sử dụng chức năng sleep (), ta sẽ thấy rằng nó

chính xác hơn 5ms trên Raspberry Pi.

Tiếp theo, chúng ta hãy sửa đổi ví dụ để mở tập tin văn bản

và ghi lại một số dữ liệu vào nó. Tất cả mọi thứ là một chuỗi khi xử

lý các tập tin văn bản. Sử dụng hàm str () để chuyển đổi các con

số thành chuỗi (và int() để đổi lại số nguyên):

from datetime import datetime

from time import sleep

import random



log = open (“log.txt”, “w”)

for I in range(5):

now = str (datetime.now())

# Tạo ra một số dữ liệu ngẫu nhiên trong phạm vi 0-1024

data = random.randint(0, 1024)

log.write (now + “” + str (data) + “\n”)

print (“.”)

sleep (.9)



67



log.flush ()

log.close ()

Trong một ứng dụng thực tế về dữ liệu, cần chắc chắn rằng

đã có ngày và thời gian chính xác trên Raspberry Pi.

Dưới đây là một ví dụ khác (tên file là ReadFile.py) có trong

một tên tập tin như một đối số từ dòng lệnh. Chương trình mở tập

tin, đọc từng dòng như một chuỗi và in nó. Lưu ý các kiểu in như

println () khơng có trong một ngơn ngữ khác. Nó được thêm một

dòng mới vào chuỗi được in. Các đối số kết thúc. Dùng end để kết

thúc và ngăn khơng cho in dòng mới:

# Mở và đọc một file từ command-line

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.readlies()

file.close()



for line in lines:

ptint (line, end = ‘’)

Python nổi tiếng vì một lý do khác đó là trong thư viện chuẩn

trên đã được đóng góp và xây dựng nhiều bởi người dùng. PyPI

(Python Package Index) là danh sách đầy đủ của các gói (hay thư

viện). Chúng ta sẽ dùng một vài thư viện trong bảng sau với đề tài

này, đặc biệt là thư viện GPIO dùng để kết nối đầu ra và đầu vào

68



của Raspberry Pi với thiết bị bên ngoài, cụ thể là bộ cảm biến

DHT22

Bảng 3.1 Một số thư viện trên cần quan tâm với người dùng

Raspberry Pi

Thư

viện

RPi.GPIO



GPIOzer

o

Pygame

SimpleC

V

SciPy



Numpy



Mô tả

Truy cập đến các

chân GPIO

Truy cập đơn

giản đến chân



Địa chỉ

sourcefofge.net/pr

ojects/raspberrygpio-python



Underpinings



cs.org



zero



pygame.org



nhỏ cho phát



Pythonpygame



simplecv.org



No package



www.scipy.org



Python-scipy



numpy.scipy.org



của Scipy

Khung làm việc

Flask



rpi.gpio

Python-gpio-



khung làm việc

API dễ dàng cho



cao

Số dạng



Python-



gpiozero.readhedo



GPIO

Trò chơi có



Computer Vision

Tính tốn nâng



Tên gói



flask.poco.org



Pythonnumpy



Python-flask



triển Web

Atom và RSS

Feedpar



nguồn cấp dữ



pypi.python.org/py



ser



liệu phân tích cú



pi/feedparser



Request



pháp

HTTP cho người



docs.python-



Python-



s



dùng



PIL



Xử lí hình ảnh



requests.org

www.pythonware.c



requests

Python-



om/products/pil/



wxPytho



Khung làm việc



imaging

Python-



n



GUI



wxpython.org



69



No package



wxgtk2.8



PySerial

PyUSB



Truy cập vào



http://github.com/



Python-



cổng nối tiếp

Giao diện FTDI-



pyserial/pyserial



serial



bleyer.org/pyusb



No package



USB



Để sử dụng một trong số thư viện đó, cần tải chương trình

thư viện, cấu hình gói và cài đặt nó. Ví dụ cài đặt thư viện NumPy:

sudo apt-get install python-numpy

Nếu một gói đã được “đóng gói” bởi tác giả thì chỉ cần tải gói

xuống, giải nén và nhập vào Terminal:

python setup.py install

Cài đặt thư viện với Pip:

Nhiều thư viện có thể được cài đặt bởi lệnh “apt-get”, ngồi

ra có thể tham khảo “Pip package installer”, một cơng cụ cài đặt

thư viện khá dễ dàng. Để cài đặt Pip, sử dụng “apt-get”:

sudo apt-get install python-pip

Sau đó, chúng ta có thể cài đặt được hầu hết các thư viện để

quản lí nó.

Ví dụ cài đặt thư viện Flask, sử dụng lệnh:

pip install flask

Trong phần sau, chúng ta sẽ sử dụng các thư viện ứng dụng

cụ thể exten-sively, nhưng đây là một ví dụ cho thấy điểm mạnh

của một thư viện có thể có. Feedparser là một thư viện phân tích

cú pháp phổ biến cho phép bạn lấy RSS hoặc Atom và dễ dàng

truy cập vào con-tent. Bởi vì hầu hết các dòng hoặc các thơng tin

trên web do RSS hoặc Atom đặt ra. Feedparser là một trong nhiều

cách để Raspberry Pi thực hiện các dự án IOT.

Đầu tiên, cài đặt thư viện Feedparser sử dụng Pip

sudo pip install feedparser

Để sử dụng nó một cách đơn giản chỉ cần cung cấp cho hàm

phân tích địa chỉ của một nguồn cấp RSS. Feedparser sẽ lấy XML

của nguồn cấp dữ liệu và phân tích nó, rồi biến nó thành một cấu

70



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

2 Lập trình cho hệ thống sử dụng ngôn ngữ Python và HTML

Tải bản đầy đủ ngay(0 tr)

×