Ngày 1 - IoT Basic-Raspberry Pi

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 91

Khóa học IoT Basic

Ngày 1: Lập trình Python


trên Raspberry Pi

TinaSoft Vietnam
Nội dung chính

• Giới thiệu về Raspberry Pi


• SSH-PuTTY, XRDP-Remote Desktop Connection
• Terminal và Command Line trên Pi
• GPIO pins
• Chuẩn giao tiếp trên Pi
• Python cơ bản

2
1
Raspberry Pi
3
1.1 Raspberry Pi là gì ?

Đây là Pi3 model B+ với CPU Cortex-


A53 kiến trúc ARM xung nhịp
1.4GHz, 1GB SDRAM, Wifi hỗ trợ
chuẩn 802.11.b/g/n, Bluetooth(BLE),
HDMI port để xuất ra hình ảnh, 4 cổng
cổng USB 2.0, Ethernet, audio output
kèm với xuất video dạng AV
1.1 Thông số của Raspberry Pi

5
1.2 Hệ điều hành (OS) cho Pi

• Pi chạy được nhiều hệ điều hành


• Phổ biến nhất là:
Raspbian
Windows 10 Iot Core
Ubuntu
Android
• Raspbian được khuyến khích dùng vì
do nhà phát triển Pi tạo ra nhằm tối ưu
cho Pi

6
1.2 Download và Burn OS và thẻ microSD

1. Download OS
2. Burn OS và thẻ microSD

3. Update và upgrade
7
1.2 Download OS

• Ta chọn Raspbian OS

• Download tại trang chủ


https://www.raspberrypi.or
g/downloads/raspbian/

• Chọn phiên bản Desktop


and Recommended
Software

8
1.2 Burn OS vào thẻ microSD

• Download:
https://www.balena.io/e
tcher/

• Chọn Select image,


link đến nơi chứa file
OS và chọn Flash!

9
1.2 Update và upgrade các ứng dụng

Update: sudo apt-get update


Update dùng đề tìm các phần mềm quan trọng mới cho Pi

Upgrade: sudo apt-get upgrade


Upgrade dùng để cập nhật phần mềm cho Pi

10
1.2 Cài OS

Burn

Sudo apt-get update


Update và upgrade

Sudo apt-get upgrade

11
2
SSH – PuTTY,
XRDP và Remote
Desktop Connection 1
2
2.1 SSH và PuTTy

PuTTY là phần mềm sử dụng để SSH là một giao thức điều

điều khiển server thông qua mạng khiển từ xa cho phép người

internet. Nó hỗ trợ nhiều giao dùng kiểm soát và chỉnh sửa

thức, trong đó có cả SSH. server từ xa qua Internet

Download: https://www.putty.org/
13
2.1 Enable SSH trên Pi

Click vào biểu tượng trên thanh taskbar và chọn như hình

14
2.1 Enable SSH trên Pi

15
2.1 Xác định IP của Pi

Dùng lệnh ifconfig để xác định cấu hình mạng của máy. Như hình dưới ta đã
biết được IP là 192.168.2.125

16
2.1 SSH vào Pi
2. SSH vào Pi
2.1 SSH vào Pi

18
2.2 Remote Desktop Connection

Remote Desktop là một giao thức độc quyền được Microsoft phát triển và được
dùng trong các máy chạy Windows giúp truy cập máy tính từ xa với giao diện đồ
họa chứ không phải giao diện dòng lệnh như PuTTY. Remote Desktop
Connection là phiên bản Remote Desktop Client trên máy Windows.

19
2.2 XRDP

• Cài đặt qua Terminal:


• “sudo apt-get install xrdp”

• Là ứng dụng Remote Desktop Server

Dùng Remote Desktop Client bên


Windows để kết nối vào XRDP bên Pi

20
2.2 Kết nối

21
3
Terminal và
Command Line 2
2
3.1 Terminal

• Terminal là công cụ cho phép điều


khiển máy tính bằng dòng lệnh
• Terminal chạy nhanh hơn so với
chương trình đồ họa thông thường
nhưng nhược điểm là phải nhớ khá
nhiều đường dẫn file cũng như các cấu
trức lệnh
• Để mở Terminal thì nhấn tổ hợp
Ctrl+Alt+T hoặc chọn trên
Taskbar
23
3.2 Command Line

01 02 03 04
Mở đóng
Sudo Cài đặt
file, folder
Một vài
lệnh cần
(quyền truy cập ứng dụng chỉnh sửa
admin) lưu ý khác
xóa

24
3.2 Cài ứng dụng

Cách
Recommended Software
1
Cách
Qua apt-get trong Terminal
2

Cách
Synaptic Package Manager
3

Cách
Cài từ gói RPM, DEB 4
3.2 Dùng Recommended Software

26
3.2 Terminal và Commanded Line

27
3.2 Synaptic Package Manager

28
3.2 Cài trực tiếp từ gói RPM hoặc DEB

Phân biệt RPM - DEB Cách cài đặt

• RPM: dành cho Redhat • Double Click vào gói cài đặt
và openSuse
• sudo dpkg –l + “tên
• DEB: dành cho Ubuntu package.deb”
và Debian

29
3.3 Folder và File

1. Tạo thư mục


2. Di chuyển tới thư mục
3. Tạo file, chỉnh sửa và lưu nội dung vào file
4. Liệt kê các thành phần có trong thư mục
5. Đổi tên, sửa, xóa thư mục hoặc file
6. Nén và giải nén thư mục, file
7. Copy, cut file hoặc thư mục

30
3.3 Tạo thư mục

Tạo một folder tên IoT_LHV_basic_ngay2 bằng câu lệnh


$ mkdir+tên folder

31
3.3 Di chuyển giữa các thư mục

Để di chuyển tới một vị trí khác, chúng ta dùng câu lệnh:


$ cd + đường dẫn tới folder

32
3.3 Tạo file

$ touch vidu1 vidu2 vidu3

Để tạo ra một hoặc nhiều file mới, chúng ta sử dụng lệnh:


$ touch + tên file1 + tên file 2 + ….

33
3.3 Mở file chỉnh sửa nội dung và lưu lại

• Dùng lệnh:
$ nano/gedit + “tên file” để mở file
• Sau khi chỉnh sửa xong nhấn tổ hợp Ctrl+X, bấm Y và Enter để lưu lại nội dung

34
3.3 Liệt kê các phần tử có trong thư mục

 $ ls + option để liệt kê các thư mục con, file có trong thư mục
 Option:
 -l : hiển thị tên file, size, ngày chỉnh sửa gần nhất, v.v
 -a : hiển thi toàn bộ folder, file kể cả khi chúng bị ẩn
 -h : hiện thị size folder, file dạng Mb, kb,….
 - R : hiển thị file ở các sub-directory

35
3.3 Nén và giải nén file

Nén
$ tar –cvzf + “Tên file nén.tar.gz” + “một hoặc nhiều file, folder cần nén”

Giải nén
$ tar –xvzf + “tên file cần giải nén”

36
3.3 Copy, cut

3.5 Copy, cut file hoặc thư mục


• Copy:
$ cp + option + “đường dẫn tới file/thư mục copy” + “đường dẫn nơi đặt file/thư mục đích”
VD: $ cp bai1.py bai2.py $cp –a thumuc1/. Thumuc2
• Cut:

$ mv + option + “tên file/thư mục cut” + “đường dẫn tới nơi đặt file/thư mục đích”

VD: $ mv bai1.py bai2.py $mv thumuc1 thumuc2

 Đối với file:

-p : copy và giữ nguyên thuộc tính của file.


-v : hiển thị quá trình copy.

 Đối với folder:

–r : copy folder và các file cấp con của thư mục.


–a : bao gồm option “-r” và duy trì các thuộc tính của folder. 37
3. Khác

3. Mt vài câu lệnh khác


 Pwd (Print Working Directory) : in ra vị trí nơi bạn đang truy cập
 Ifconfig: cho phép xem cấu hình mạng của máy
 Top: ứng dụng giống như Task Manager bên Windows
 Passwd + “tên user” : đổi mật khẩu user
 Man + “tên lệnh” : in ra cách dùng lệnh đó và các option đi kèm
 Df: hiển thị đọ chiếm dụng không gian đĩa cứng, đơn vị là kb. Để hiển thị với
dung lượng là MB hay GB thì dùng option –h và câu lệnh sẽ là df –h.
 Free: hiển thị bộ nhớ RAM trống với vài option:
 -h: dễ đọc hơn
 -g: đơn vị hiển thi GB
 -m: đơn vị hiển thị MB
 Uname –a: hiển thị thông tin máy, nhân và phiên bản kernel
3
8
4
Các chuẩn giao
tiếp 3
9
4. Các chuẩn giao tiếp

UART I2C SPI

40
4.1 UART

• Hỗ trợ trên chân 8 (UART TX) và 10 (UART RX) của Pi


• UART dùng để giao tiếp qua Serial các thiết bị với nhau

TX TX

RX RX

41
4.2 I2C

• Là chuẩn giao tiếp được Philips phát triển, sử dụng 2 dây SDA và SCL
kết nối nhiều thiết bị, IC với nhau

• Có nhiều chế độ hoạt động


1. Một chủ nhiều tớ
2. Một chủ một tớ
3. Nhiều chủ nhiều tớ

42
4.2 I2C

SDA
SCL
Slave Slave Slave
Master
1 2 3

SDA(3) SDA(A4)

SCL(5) SCL(A5)

43
4.3 SPI

• MOSI (SI): chân truyền từ Master


sang Slave
• MISO (SO): ngược lại so với SI,
dùng để truyền từ Slave sang Master
• SCLK (SCK): clock đồng bộ được
tạo ra bởi Master
• SS (CS): khi Master không gửi dữ
liệu, chân SS ở mức cao, sẽ truyền
dữ liệu khi SS ở mức thấp

44
4.3 SPI

MOSI(19/38) MOSI

MISO(21/35) MISO

SCK(11/40) SCK

SS(24/26) SS

45
5
Python cơ bản 4
6
5. Python cơ bản

• Hàm print và khai báo biến


• Nhập liệu từ bàn phím
• Khái niệm về hàm
• Module
• Hàm điều kiện if-else
• Mảng
• Vòng lặp while, for
• Hướng đối tượng OPP

47
5.1 Hàm print

Tạo ra một file ham_print.py và nhập nội dung sau:


print("Iam Tinasoft")
a = -12.42
s = "Tinasoft"
print("====== Kieu 1 ======")
print("Gia tri cua a la: {}".format(a))
print("Gia tri cua s la: {}".format(s))
print("====== Kieu 2 ======")
print("Gia tri cua a la: %f" %(a))
print("Gia tri cua s la: %s" %(s))
print("Gia tri cua s la: %r" %(s))
Lưu file lại sau đó chạy file với lệnh $python3 ham_print.py

48
5.2 Nhập liệu từ bàn phím

Tạo file nhap_lieu.py và với nội dung sau:

a = int(input("Nhap vao a: "))


print("Gia tri cua a la: {}".format(a))

Lưu lại và chạy file với lệnh $python3 nhap_lieu.py

49
5.3 Hàm không có đối số, không trả về

Tạo file info.py với nội dung

#hàm khong doi so, khong tra ve


def info():
print("Day la ham khong có doi so và khong tra ve")
a = info()

Lưu lại file và chạy với lệnh $python3 info.py

50
5.3 Hàm có đối số, không trả về

Tạo file sum.py với nội dung

#hàm khong doi so, khong tra ve


def info():
print("Day la ham khong có doi so và khong tra ve")
a = info()

Chạy file sum.py và chúng ta được kết quả như hình

51
5.3 Hàm có đối số và có trả về

Tạo file multi.py với nội dung

#ham co doi so va co tra ve


def multi(a, b):
return a*b
a = 12.4
b = 2.4
c = multi(a, b)
print("tich hai so {} va {} la {}".format(a, b, c))

Dùng lệnh $ python3 multi.py để chạy file

52
5.4 Module def cong(a, b):
return a+b
def tru(a, b):
Tạo file LHV_math.py đóng vai trò return a-b
là module với nội dung sau: def nhan(a, b):
return a*b
def chia(a, b):
return a/b

Tạo thêm file test_module.py

import LHV_math as LHV


a = 10
b = 10
c = LHV.cong(a, b)
print("Tong hai so a va b la: {}".format(c))

Lưu lại và chạy với lệnh $python3 test_module.py

53
5.5 if-else

6. Cấu trúc hàm if-else

54
5.5 Hàm if-else

Tạo file if-else.py với nội dung sau để kiểm tra điểm nhập vào

a = float(input("Nhap vao diem kiem tra: "))

if a<5:
print("Diem kem")
elif a<8:
print("Can co gang")
elif a<=10:
print("Gioi")
else:
print("Nhap lai diem trong khoang tu 1 toi 10")

55
5.5 Hàm if-else

Lưu file lại và chạy với lệnh $python3 if_else.py


Mỗi lần chạy chúng ta lại nhập một điểm khác nhau và xem kết quả

56
5.6 in ra mảng

5.6 In ra mảng
Tạo file in_mang.py với nội dung

#in ra phan tu trong mang


print("====== In ra mảng ======")
xe_may = ['toyota', 'honda', 'yamaha']
print("xe_may[0] = {}".format(xe_may[0]))
print("xe_may[1] = {}".format(xe_may[1]))
print("xe_may[2] = {}".format(xe_may[2]))
print("\n")

Chạy file với lệnh $python3 in_mang.py

57
5.6 Thêm, xóa

Tạo file them_xoa.py với nội dung sau


#them, xoa phan tu trong mang
xe_may = ['toyota', 'honda', 'yamaha']
print("====== Them, xoa phan tu trong mang ======")
xe_may = ['toyota', 'honda', 'yamaha']
add = input("Nhap them hang xe may: ")
xe_may.append(add)
print(xe_may)
delete = int(input("Ban muon xoa phan tu nao trong mang? "))
xe_may.pop(delete)
print("xe_may = {}".format(xe_may))
print("Do dai cua mang xe_may la: {}".format(len(xe_may)))

Chạy file với lệnh $python3 them_xoa.py

58
5.6 Tính tổng các phần tử trong mảng

File tính tinh_tong.py tạo ra với nội dung

#tinh tong cac phan tu trong mang


so = [12, 34, 12,321, 34.56, -213.123]
sum = 0
for i in so:
sum+=i
print("tong cac phan tu trong mang la {}".format(sum))

Dùng lệnh $python3 tinh_tong.py để thực thi

59
5.6 Sắp xếp các phần tử của mảng

Tạo file sap_xep_mang.py với nội dung


#sap xep mang
xe_may = ['toyota', 'honda', 'yamaha']
so = [12, 34, 12,321, 34.56, -213.123]
print("====== Sap xep mang ======")
print("Mang xe may sau khi sap xep la:
{}".format(sorted(xe_may)))
print("Mang so sau khi sap xep la: {}".format(sorted(so)))

Thực thi file với lệnh $python3 sap_xep_mang.py

60
5.7 While

Tạo file vong_lap_while.py với nội dung sau:


import time as t
i =0
while i<10:
print("i = {}".format(i))
i+=1
t.sleep(2)

Chạy file với câu lệnh $python3 vong_lap_while.py

61
5.7 For

Tạo file vong_lap_for.py với nội dung như bên dưới


import time as t
for i in range(1, 15):
print("i = {}".format(i))
t.sleep(2)
Chạy file với lệnh $python3 vong_lap_for.py và xem kết quả

62
5.8 OPP (hướng đối tượng)

Loạ i xe

Màu xe

Loạ i lố p
63
5.8 Class

6. Chúng
Viết một class
ta có đơn
class giảnvới các thuộc tính như name, age, address ở trong file opp.py
person

#nhap vao class


class person(object):
def __init__(self, name, age, address):
self.name = name
self.age = age
self.add = address

A = person("Nguyen Van A", 40, "45 Hoangmai, hanoi")


B = person("LHV", 4, "110 Tranphu, hadong")
print("A.name = {}".format(A.name))
print("A.age = {}".format(A.age))
print("B.add = {}".format(B.add))

Chạy file với lệnh $ python3 opp.py và được kết quả như sau

64
5.8 Nhập vào class nhiều người cùng lúc

Tạo ra một file list_input.py với nội dung


#nhap vao nhieu nguoi bang list
class person(object):
def __init__(self, name, age, address):
self.name = name
self.age = age
self.add = address
employ = [person('moe', 20, 'Hanoi'), person('LHV', 5, "110
Tran Phu, Ha noi"),person('Tinasoft', 2, "Ha dong, ha noi")]
print("{} thanh lap duoc {} nam va dat tai
{}".format(employ[2].name, employ[2].age, employ[2].add))

Chạy file với lệnh $python3 list_input.py

65
5.8 Sắp xếp theo họ tên

Tạo file sap_xep_ten.py với nội dung


#sap xep theo ten
class person(object):
def __init__(self, name, age, address):
self.name = name
self.age = age
self.add = address
employ = [person('moe', 20, 'Hanoi'), person('LHV', 5, "110
Tran Phu, Ha noi"),person('Tinasoft', 2, "Ha dong, ha noi")]
ten = []
for x in employ:
ten.append(x.name)
print("Ten sau khi duoc sap xep la: {}".format(sorted(ten)))

Dùng lệnh $python3 sap_xep_ten.py để thực thi


66
5.8 Sắp xếp theo tuổi

Tạo file sap_xep_tuoi.py với nội dung


#sap xep theo tuoi
class person(object):
def __init__(self, name, age, address):
self.name = name
self.age = age
self.add = address
employ = [person('moe', 20, 'Hanoi'), person('LHV', 5, "110
Tran Phu, Ha noi"),person('Tinasoft', 2, "Ha dong, ha noi")]
tuoi = []
for i in employ:
tuoi.append(i.age)
print("Tuoi sau khi sap xep la: {}".format(sorted(tuoi)))
Chạy file với lệnh $python3 sap_xep_tuoi.py
67
6
Bài tập 6
8
BT 1

Hãy in ra thông tin cơ bản về mình như tên, tuổi, ngày tháng, nơi làm việc

#1
print("B1")
print("====== Ngay2 IoT Basic =====")
print("LHV Company - Tinasoft Vietnam")
print("Dia chi: 110 Trangphu, Hadong, Hanoi")

69
BT 2

Nhập vào năm sinh bất kỳ và tính ra số tuổi tương ứng, nếu số năm vượt quá số năm
hiện tại thì báo lỗi và bắt nhập lại

#2
print("B2")
while 1:
a = int(input("Nhap vao nam sinh: "))
if(a>2019):
print("Nhap lai nam sinh!!!")
else:
print("Ban {} tuoi".format(2019-a))
break

70
BT 3

Viết hàm tính bình phương của một số được nhập vào từ bàn phím

#3
print("B3")
def binh_phuong(a):
return a*a
a = int(input("Nhap a: "))
print("Binh phuong cua {} la: {}".format(a, binh_phuong(a)))

71
BT 4

Viết chương trình in ra một bảng cửu chương được nhập vào từ bàn phím

#4
print("B4")
a = int(input("Nhap vao so a: "))
print("Bang cuu chuong nhan {} la: ".format(a))
for i in range(1, 11):
print("{} x {} = {}".format(a, i, a*i))

72
BT 5

Hãy viết một ứng dụng máy tính đơn giản có thể tính nhân chia công trừ hai số nguyên
và cho ra kết quả
Gợi ý: đầu vào gồm hai số và phép tính

73
BT 5

#5
print("B5")
a = float(input("a = "))
b = float(input("b = "))
while 1:
cal = input("Phep tinh: ")
if( cal == 'tru'):
print("a tru b bang {}".format(a-b))
break
elif( cal == 'cong'):
print("a cong b bang {}".format(a+b))
break
elif( cal == 'nhan'):
print("a nhan b bang {}".format(a*b))
break
elif( cal == 'chia'):
print("a chia b bang {}".format(a/b))
break
else: 74
print("Nhap lai phep tinh")
BT 6

Viết chương trình nhập vào tháng và in ra mùa tương ứng

#6
print("B6")
a = int(input("Bay gio la thang may? "))
if a<3 and a>=1:
print("Bay gio dang la mua xuan")
elif a>3 and a<=6:
print("Bay gio dang la mua he")
elif a>6 and a<=9:
print("Bay gio dang la mua thu")
elif a>9 and a<=12:
print("Bay gio dang la mua dong")
else:
print("Thang nhap vao phai tu 1 toi 12") 75
BT 7

Viết chương trình in ra các số chẵn trong khoảng từ 100 tới 600
Gợi ý: dùng hàm range(100, 600)

#7
print("B7")
print("Cac so chan trong khoang tu 100 toi 600 la")
for i in range(100, 600):
if i%2 == 0:
print(i)

76
BT 8

Nhập vào độ dài 3 cạnh và kiểm tra xem chúng có thể tạo ra một tam giác không

#8
print("B8")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
if a+b>c and a+c>b and b+c>a:
print("Ba canh a, b, c co the tao thanh mot tam giac")
else:
print("Ba canh a, b, c khong the tao ra mot tam giac")

77
BT 9

Viết chương trình nhập vào một số và in ra xem nó có chia hết cho 2, 3, 5 không.
Nếu có thì in ra là chia hết cho 2, 3 hay 5 còn nếu không thì in ra là không chia hết

#9
print("B9")
a = int(input("a = "))
if a%5 == 0:
print("a chia het cho 5")
if a%2 == 0:
print("a chia het cho 2")
if a%3 == 0:
print("a chia het cho 3")
if a%2!=0 and a%2!=0 and a%5!=0:
print("a khong chia het cho 2, 3 va 5")
78
BT 10

Nhập vào một câu, chuỗi bất kỳ bao gồm cả chữ hoa và thường, in ra số các ký tự hoa,
số các ký tự chữ thường
Gợi ý: upper() là hàm biến chữ thường thành chữ hoa, hàm lower() ngược lại

#10
print("B10")
a = input("Nhap vao chuoi: ")
up = low = 0
for i in a:
if i.islower():
low += 1
elif i.isupper():
up += 1
else:
pass
print("So ky tu hoa la: {}".format(up)) 79
print("So ky tu thuong la: {}".format(low))
BT 11

Giả sử bạn có một cơ sở dữ liệu, hãy kiểm tra xem dữ liệu nhập vào bao gồm
username và password có trong cơ sở dữ liệu không, nếu không thì in ra không
có, nếu có nhưng password hoặc username sai thì in ra sai password hoặc
username

80
#11
BT 11 print("B11")
#database
BT 11 Database
user1 = "LHV"
pawd1 = "110tranphu"
user2 = "tinasoft"
pawd2 = "vietnam"
#check input
user = input("Username: ")
pawd = input("Password: ")
if user == user1:
if pawd == pawd1:
print("Welcome {}".format(user1))
else:
Kiểm tra điều kiện print("Sai password")

elif user == user2:


if pawd == pawd2:
print("Welcome {}".format(user2))
else:
print("Sai password")

else:
print("User khong ton tai")
BT 12

Nhập vào chuỗi, ký tự, số, v.v chỉ dừng lại khi gặp từ “none”,”NONE hoặc “None” và
in ra các mảng được sắp xếp theo thứ tự từ điển
Gợi ý: dùng hàm sort() để sắp xếp

#12
print("B12")
a = []
while 1:
x = input("nhap chuoi bat ky: ")
if x != 'none' or x != 'NONE' or x != 'None':
a.append(x)
else:
break
a.sort()
print("Chuoi a sau khi sap xep la: {}".format(a))
82
BT 13

Hãy viết một ứng dụng tính tiền đơn giản, nhập mệnh giá tiền vào, giá trị món hàng và
in ra tiền cần phải trả lại
Lưu ý: tiền chỉ đầu vào chỉ có các giá trị như 1000đ, 2000đ, 5000đ, 10.000đ, 20.000đ,
50.000đ, 100.000đ, ….

83
BT 13

#13
print("B13")
b = float(print("Gia tri don hang: "))
while 1:
a = float(input("Khach dua: "))
if a<b:
print("Khach dua thieu tien")
elif a == 1000:
print("Tra lai khach {}d".format(1000-b))
break
elif a == 2000:
print("Tra lai khach {}d".format(2000-b))
break
elif a == 5000:
print("Tra lai khach {}d".format(5000-b))
break
elif a == 10000:
print("Tra lai khach {}d".format(10000-b))
break
elif a == 20000:
print("Tra lai khach {}d".format(20000-b)) 84
break
BT 14

Giả sử bạn là chủ nhà nghỉ, hãy viết chương trình tính số tiền mà một khách phải trả
với ngày thuê, loại phòng và giá dịch vụ đi kèm. Có 3 loại phòng là đơn, đôi và VIP
với giá khác nhau. Loại phòng, số ngày và giá dịch vụ nhập vào từ bàn phím, in ra số
tiền

85
BT 14

#14
print("B14")
ng_thue = int(input("So ngay thue phong: "))
dich_vu = float(input("Tien dich vu: "))
while 1:
loai = input("Loai phong: ")
if loai == 'don':
print("Khach phai tra
{}d".format(ng_thue+100000+dich_vu))
break
elif loai == 'doi':
print("Khach phai tra
{}d".format(ng_thue+150000+dich_vu))
break
elif loai == 'VIP':
print("Khach phai tra
{}d".format(ng_thue+200000+dich_vu))
break
else:
86
print("Nhap lai loai phong")
BT 15

Viết class hcn bao gồm các thuộc tính như chiều dài, chiều rộng được nhập vào từ bàn
phím và in ra diện tích của hình chữ nhật đó

#15
print("B15")
class hcn:
def __init__(self):
self.ch_dai = ""
self.ch_rong = ""
def input(self):
self.ch_dai = float(input("Chieu dai: "))
self.ch_rong = float(input("Chieu rong: "))
def output(self):
return self.ch_dai * self.ch_rong
a = hcn()
a.input() 87
print("Dien tich hinh chu nhat la: {}".format(a.output()))
BT 16

Viết một class nhận vào một chuỗi sau đó in ra chuỗi đó được viết hoa
Gợi ý: dùng hàm upper() để chuyển chữ thường thành chữ in hoa

#16
print("B16")
class in_hoa(object):
def __init__(self):
self.s = ""
def input(self):
self.s = input("Nhap vao chuoi: ")
def chuyen(self):
return self.s.upper()
a = in_hoa()
a.input()
print("Chuoi sau khi chuyen la: {}".a.chuyen()) 88
BT 17

Hãy lập một class hinhtron và in ra diện tích và chu vi của hình tròn đó

#17
print("B17")
pi = 3.14
class hinhtron(object):
def __init__(self):
self.bk = ""
def input(self):
self.bk = float(input("Ban kinh: "))
def cal(self):
c_vi = 2 * pi * self.bk
dt = self*bk * self*bk
return c_vi, dt
b = hinhtron()
b.input()
data = b.cal()
print("Dien tich hinh tron la: {}".format(data[1]))
print("Chu vi hinh tron la: {}".format(data[0])) 89
Tổng kết

• Raspberry Pi
• Cách dung SSH-PuTTY và XRDP-Remote Desktop Connection
• Terminal và Command Line trên Pi
• GPIO pins trên Pi
• Các chuẩn giao tiếp được hỗ trợ trên Pi
• Python cơ bản và bài tập

90
91

You might also like