Professional Documents
Culture Documents
KTDH - Nhóm 3
KTDH - Nhóm 3
BÁO CÁO
KỸ THUẬT ĐỒ HOẠ
Hà Nội 2020
Sinh viên thực hiện:
Nguyễn Bá Nhật
B17DCCN479
Đỗ Minh Quân
B17DCCN497
Mục lục
PHẦN CƠ BẢN................................................................................................................................3
Bài 1: Tổng quan về Python.........................................................................................................3
Bài 2: Khai báo biến trong python...............................................................................................9
1
Bài 3: Hàm print trong Python...................................................................................................11
Bài 4: Chuỗi trong Python.........................................................................................................13
Bài 5: Số trong Python:..............................................................................................................17
Bài 18: List trong Python...........................................................................................................19
Bài 19: Xử lý số học với module math trong Python................................................................25
PHẦN PYTHON NÂNG CAO........................................................................................................33
Bài 9: Regular Expression trong Python (P2)............................................................................33
2
PHẦN CƠ BẢN
Và Python luôn được biết đến với các đặc điểm sau đây:
✔ Cú pháp rất tường minh, dễ đọc.
✔ Các khả năng tự xét mạnh mẽ.
✔ Hướng đối tượng trực giác.
✔ Cách thể hiện tự nhiên mã thủ tục.
✔ Hoàn toàn mô-đun hóa, hỗ trợ các gói theo cấp bậc.
✔ Xử lý lỗi dựa theo ngoại lệ.
✔ Kiểu dữ liệu động ở mức rất cao.
✔ Các thư viện chuẩn và các mô-đun ngoài bao quát hầu như mọi việc.
✔ Phần mở rộng và mô-đun dễ dàng viết trong C, C++.
✔ Có thể nhúng trong ứng dụng như một giao diện kịch bản (scripting interface).
✔ Python mạnh mẽ và thực hiện rất nhanh.
2. Cài đặt Python
3
· Tải Python: truy cập vào đường dẫn: https://www.python.org/downloads/
và ấn vào nút như bình bên dưới
· Sau khi chuyển đổi trang, kéo xuống dưới cùng và ấn vào đường link như
hình dưới:
4
· Sau khi download xong, chỉ cần mở file vừa tải về lên
5
· Chọn Customize installation và đảm bảo đã tích vào 2 ô bên dưới
· Tiếp theo đảm bảo tất cả các ô đã được tích như hình bên dưới, sau đó
nhấn Next:
6
· Tiếp theo chọn vị trí mà bạn muốn Python được cài đặt, sau đó nhấn
Install:
· Bạn đã cài đặt thành công nếu cửa sổ hiện lên như sau:
7
3. Chạy chương trình đầu tiên:
· Chương trình “Python Shell” đã được chạy, nó là một chương trình giúp
bạn viết mã Python:
8
· Nhập vào 1 đoạn code ‘print(“Hello World”)’ và nhấn Enter
· Nếu kết quả như hình trên thì bạn đã cài đặt và chạy thành công chương
trình Python đầu tiên
Trong đó:
tenBien là tên của biến mà các bạn muốn đặt. Tên biến này không được bắt đầu bằng số
hay các ký tự đặc biệt, mà chỉ được bắt đầu bằng chữ cái hoặc ký tự _ và nó có phân biệt hoa
thường.
giaTri là giá trị của biến mà bạn muốn gán.
VD: Mình sẽ khai báo một biến name trong Python.
Ngoài ra, các bạn cũng có thể khai báo nhiều biến bằng 1 giá trị trên 1 lần khai báo.
VD:
Hay là khai báo nhiều biến với các giá trị tương ứng của nó trên 1 dòng.
VD:
9
Python cũng giống như một số các ngôn ngữ bậc cao khác, khi ta khai báo biến thì kiểu
dữ liệu của nó sẽ tự động được detect. Vì vậy nên chúng ta cũng không phải quá vất vả khi khai
báo 1 biến.
VD: Các kiểu dữ liệu cơ bản trong python.
10
Trong một trường hợp nào đó mà bạn muốn chuyển đổi kiểu dữ liệu của một biến, thì
Python cũng hỗ trợ bạn qua các hàm cơ bản sau:
Kết quả sau khi chạy file trên Visual Studio Code
11
Chạy kết quả ta thu được
Trong Python, khi truyền nhiều đối số vào hàm print thì chúng sẽ tự động được
phân cách nhau bằng một dấu cách. Ta có thể thay đổi điều này bằng việc truyền thêm
đối số sep = ‘character’ vào hàm print.
Trong đó character là một ký tự hoặc chuỗi dùng để ngăn cách.
VD:
Khi chạy đoạn code trên thì chúng ta sẽ thu được kết quả:
Vậy ở đây, khi chúng ta không muốn nó tự động ngắt dòng mỗi khi kết thúc print
nữa thì mọi người sử dụng keyword end thêm vào param cuối cùng của hàm print với cú
pháp như sau:
print(content, end = “charset”)
Trong đó charset là ký tự mà chúng ta muốn thực hiện khi kết thúc hàm print.
12
Kết quả lúc này sẽ thu được như sau:
13
2. Format chuỗi:
Ngoài những cách in ra dữ liệu ở trên thì mọi người cũng có thể sử dụng các keyword
định dạng cho kiểu giá trị và binding nó vào chuỗi. Sử dụng với cú pháp:
Trong đó:
● type là các kiểu dữ liệu các bạn muốn binding và thay thế vào vị trí đó.
● binding là giá trị mà các bạn muốn binding vào vị trí được xác định trong
chuỗi.
Type là các kiểu sau:
Cú pháp fomat Mô tả
%c character
%s chuỗi
%i số nguyên
%d số nguyên
%u số nguyên
%o bát phân
14
%e số mũ (với e thường)
%E số mũ (với e hoa)
%f số thực
Trong đó nếu như bạn muốn binding nhiều chuỗi vào trong chuỗi thì mỗi giá trị bạn
muốn binding cách nhau bởi 1 dấu ,
VD:
15
Trong đó:
● stringName là tên của biến chứa chuỗi, hoặc chuỗi.
● index là vị trí của ký tự bạn muốn lấy ra. Index này hỗ trợ chúng ta truy
xuất được cả 2 chiều của chuỗi nếu:
○ Tính từ đầu thì nó bắt đầu từ 0.
○ Tính từ cuối thì nó bắt đầu từ -1.
Để cho dễ hiểu thì bạn có thể xem hình sau:
VD:
Nếu trong trường hợp các bạn muốn lấy nội dung của một đoạn chuỗi trong chuỗi đó thì
có thể sử dụng cú pháp sau:
Trong đó:
● stringName là tên của biến chứa chuỗi, hoặc chuỗi.
● start là vị trí của ký tự bắt đầu lấy, nếu để trống start thì nó sẽ lấy từ 0.
● end là vị trí kết thúc (nó sẽ lấy trong khoảng từ start đến < end), nếu để
trống end thì nó sẽ lấy đến hết chuỗi.
VD:
16
Bài 5: Số trong Python:
1, Kiểu dữ liệu số - number trong Python.
Một biến được khai báo là kiểu dữ liệu number trong Python thì xét về mặt lưu trữ bộ
nhớ thì nó sẽ không thay đổi được giá trị, mà khi chúng ta gán giá trị mới cho biến đó thì thực
chất nó sẽ tạo ra các ô nhớ mới khác để lưu trữ giá trị mới đó.
Trong Python hỗ trợ chúng ta 3 kiểu dữ liệu dạng number như sau:
● int kiểu số nguyên kiểu này có kích thước không giới hạn (python 2 thì bị
hạn chế).
● float kiểu số thực. Kiểu này ngoài kiểu viết bình thường ra thì nó cũng có
thể được hiển thị dưới dạng số mũ E (VD: 2.5e2 = 250).
● complex kiểu số phức đây là kiểu dữ liệu rất ít khi được sử dụng tới, nên
mình sẽ không giải thích thêm ở đây.
●
Nếu như bạn muốn giải phóng một vùng nhớ cho một biến trong Python thì bạn có thể sử
dụng lệnh del với cú pháp sau:
Trong đó, avariableName, avariableName1,... là các biến mà bạn muốn giải phóng.
VD:
2, Ép kiểu số.
Trong một trường hợp nào đó mà bạn muốn chuyển đổi kiểu dữ liệu của một biến, thì
Python cũng hỗ trợ bạn qua các hàm cơ bản sau:
● float(data) chuyển đổi sang kiểu số thực.
17
● int(data,base) chuyển đổi sang kiểu số, trong đó base là kiểu hệ số mà các
bạn muốn chuyển đổi sang (tham số này có thể bỏ trống).
● str(data) chuyển đổi sang dạng chuỗi.
● complex(data) chuyển đổi sang kiểu phức hợp.
● tuple(data) chuyển đổi sang kiểu Tuple.
● dict(data) chuyển đổi sang kiểu Dictionary.
● hex(data) chuyển đổi sang hệ 16.
● oct(data) chuyển đổi sang hệ 8.
● chr(data) chuyển đổi sang dạng ký tự.
● ...
VD:
+ a + b // 15 Phép cộng.
- a - b // -5 Phép trừ.
* a * b // 50 Phép nhân.
18
Phép chia lấy phần nguyên
// a // b // 0
nếu a, b là dương.
a ** b //
** Phép lũy thừa.
9765625
3. max(): Hàm này sẽ trả về phần tử có giá trị lớn nhất trong list. Nếu là chuỗi thì nó
sẽ trả về phần tử có độ dài chuỗi dài nhất, nếu là số thì nó sẽ trả về phần tử có số lớn nhất.
Cú pháp: max(list)
Trong đó, list là list mà các bạn cần kiểm tra.
VD:
19
4. min(): Hàm này sẽ trả về phần tử có giá trị nhỏ nhất trong list. Nếu là chuỗi thì nó
sẽ trả về phần tử có độ dài chuỗi ngắn nhất, nếu là số thì nó sẽ trả về phần tử có số nhỏ nhất.
Cú pháp: min(list)
Trong đó, list là list mà các bạn cần kiểm tra.
VD:
5. append(): Phương thức này có tác dụng thêm phần vào cuối một list
Cú pháp: list.append(obj)
Trong đó:
- List là list mình cần thêm phần tử
- Obj là phần tử mà mình muốn thêm vào list
VD:
6. extend(): Hàm này có tác dụng kế thừa lại các phần tử của list2 và thêm vào trong
list1
20
Cú pháp: list1.extend(list2)
Trong đó:
- list1: là list mình muốn kế thừa từ một list khác (list2)
- list2: là list được kế thừa
VD:
*Lưu ý: phương thức append() và extend() là giống nhau nhưng có một sự khác biệt về
phần tử như sau:
Trong ví dụ dưới, append sẽ hiểu (‘a’,’b’) là 1 đối tượng
7. count(): Phương thức có tác dụng đếm số lần xuất hiện của một thành phần trong
list
Cú pháp: list.count(val)
Trong đó:
- list là list cần kiểm tra
- val là phần tử cần tìm và đếm trong list
VD:
21
8. index(): Phương thức này có tác dụng trả về index xuất hiện đầu tiên của phần tử
mà bạn muốn tìm và nếu như không tìm thấy thì nó sẽ gọi exception
Cú pháp: list.index(val)
Trong đó:
- list là list cần kiểm tra
- val là phần tử cần tìm trong list
VD:
9. insert(): Phương thức có tác dụng thêm phần tử vào vị trí index của list, và các
phần tử sau index đó sẽ được đẩy về phía sau
Cú pháp: list.insert(index,val)
Trong đó:
- list là list bạn cần thêm
- index là vị trí bạn muốn thêm phần tử val vào
- val là phần tử mà bạn muốn thêm vào trong list
VD:
10. reverse(): Phương thức này có tác dụng đảo ngược vị trí của các phần tử trong list
Cú pháp: list.reverse()
VD:
22
11. remove: Phương thức này có tác dụng xoá phần tử khỏi list
Cú pháp: list.remove()
VD:
12. pop(): Phương thức này có tác dụng xóa bỏ phần tử trong list dựa trên index của
nó
Cú pháp: list.pop(index)
Trong đó:
- list là danh sách cần xóa phần tử
- index là index của phần tử mà mình muốn xóa trong list. Mặc định thì index =
list-1
VD:
13. sort(): Phương thức này có tác dụng sắp xếp lại các phần tử trong list theo 1 thứ tự
xác định
Cú pháp: list.sort(reverse, key)
Trong đó:
- list là list muốn sắp xếp
- reverse là một Boolean cấu hình kiểu sắp xếp. Nếu reverse = True thì list sẽ được
sắp xếp từ lớn đến bé, nếu reverse = False thì list sẽ được sắp xếp theo thứ tự từ bé đến lớn. Mặc
định thì reverse = False.
23
- key là callback def để xử lý list hoặc là một lambda function (thường được dùng
để sắp xếp các list tuple hoặc dictionary).
VD:
14. clear(): Phương thức này có tác dụng xóa bỏ hết tất cả các phần tử trong list
Cú pháp: list.clear()
Trong đó : list là list mà bạn muốn xoá bỏ hết phần tử
VD:
24
Cú pháp: abs(number)
Trong đó, number là số bạn muốn chuyển đổi.
VD:
Kết quả:
2, fabs().
Hàm này có tác dụng trả về giá trị tuyệt đối của một số. Nhưng nó sẽ có khác với hàm
abs() ở trên là hàm này sẽ chỉ chấp nhận chuyển đổi được kiểu số nguyên (integer) và số thực
(float) trong khi hàm abs() chuyển đổi được cả complex number.
Cú pháp: math.fabs(number)
Trong đó, number là số mà bạn muốn chuyển đổi.
VD:
Kết quả:
3, ceil().
Hàm này có tác dụng chuyển đổi một số về dạng số nguyên của nó và số nguyên đó phải
lớn hơn hoặc bằng số ban đầu. Nói một cách đơn giản thì hàm này có tác dụng làm tròn lên 1 số.
Cú pháp: math.ceil(number)
Trong đó number là số các bạn muốn làm tròn.
VD:
25
4, exp().
Hàm này có tác dụng trả về kết quả e x , trong đó x là đối số truyền vào hàm.
VD:
5, floor().
Hàm này có tác dụng làm tròn một số về dạng số nguyên nhỏ hơn hoặc bằng số ban đầu.
Nói cách khác thì là làm tròn xuống một số.
VD:
26
6, log().
Hàm này sẽ trả về kết quả logarithm x, với x là đối số truyền vào hàm và x > 0.
VD:
7, log10().
Hàm này tương tự như hàm log(), nhưng là dạng logarithm cơ số 10.
VD:
8, max().
Hàm này có tác dụng trả về số lớn nhất trong các số được truyền vào.
Lưu ý: Hàm này không nằm trong module math, nên các bạn không cần phải import
modules math.
VD:
27
9, min().
Hàm này có tác dụng trả về số nhỏ nhất trong các số được truyền vào.
Lưu ý: Hàm này không nằm trong module math, nên các bạn không cần phải import
modules math.
VD:
10, modf().
Hàm này có tác dụng chuyển đổi một số về một tuple. Tuple này chứa phần thập phân và
phần nguyên của số đó, lưu ý tất cả các giá trị trong tuple này đều ở dạng float.
VD:
11, pow().
28
Hàm này có tác dụng trả về kết quả của phép x y , với x là tham số thứ nhất, y là tham số
thứ 2.
VD:
12, round().
Hàm này có tác dụng làm tròn số về dạng cần thiết.
Lưu ý: Hàm này không nằm trong module math, nên các bạn không cần phải import
modules math.
Cú pháp: round(number, count)
Trong đó:
number là số mà các bạn cần làm tròn
count là số mà các bạn muốn làm tròn sau dấu phẩy. Mặc định thì count = 0.
VD:
13, sqrt().
Hàm này có tác dụng trả về căn bậc 2 của một số, với điều kiện số đó phải lớn hơn 0.
VD:
29
14, acos().
Hàm này có tác dụng tính arccos của một số, đơn vị là radian. Với điều kiện số đó phải
nằm trong khoảng: -1<= x <=1.
VD:
15, cos().
Hàm này trả về cosin của một số, nhưng số này được tính theo radian.
VD:
30
16, asin().
Hàm này có tác dụng trả về arcsin của một số, đơn vị là radian. Với điều kiện số đó phải
nằm trong khoảng: -1<= x <=1.
VD:
17, sin().
Hàm này trả về sin của một số, nhưng số này được tính theo radian.
VD:
31
18, atan() - tan().
Tương tự như với asin() - sin() và acos() - cos() ta cũng có atan() và tan() với chức năng
là tính tangent của một số.
VD:
19, radians().
Hàm này có tác dụng chuyển đổi từ độ sang radians.
VD:
32
20, Lời kết.
Ở đây tôi chỉ liệt kê các hàm thông dụng, ngoài ra thì vẫn còn rất nhiều các hàm khác.
Các bạn có thể tham khảo tại đây: https://docs.python.org/3/library/math.html
33
Và bạn cũng có thể liệt kê ra các ký tự dưới dạng từ ... đến ... bằng cách thể hiện dấu -
giữa hai khoảng đó.
VD: Pattern chuỗi bắt đầu bằng ký tự in thường hoặc bằng số.
.
Ký tự dấu . này tương đương với việc so khớp một chuỗi phải chứa ít nhất một ký tự.
VD:
34
^
Ký tự này đại diện cho việc so khớp từ đầu của chuỗi.
VD: So khớp xem có phải đầu chuỗi là chữ h
$
Ký tự này đại diện cho việc so khớp đến cuối chuỗi.
VD: So khớp xem cuối chuỗi có phải chữ T
35
*
Ký tự này đại diện cho có thể có hoặc không có ký tự trước nó.
VD: So khớp một chuỗi xem có thể bắt đầu bằng t hoặc không bắt đầu bằng t hoặc là
chuỗi rỗng.
+
Ký tự này đại diện cho có thể xuất hiện một hoặc nhiều ký tự trước nó.
VD: So khớp xem một chuỗi chỉ chứa chữ cái in thường.
36
?
Nếu đằng trước ? có n ký tự thì chuỗi sẽ khớp với cả n ký tự hoặc khớp với n-1 ký tự
đằng trước ? và bỏ qua ký tự cuối.
VD: ‘abc?’ sẽ match với ‘ab’ hoặc ‘abc’
{m, n}
Ký tự này đại diện cho việc so khớp xem chuỗi đằng trước nó xuất hiện bao nhiêu tối
thiểu m lần và tối đa n lần. Nếu bỏ trống n thì là so khớp sự xuất hiện m lần của chuỗi đằng trước
nó.
VD: Kiểm tra xem 3 chữ cái đầu của chuỗi có phải là V không.
37
|
Ký tự này đại diện cho sự tồn tại của một trong 2 xâu trước và sau nó.
VD:
()
Ký tự này dùng để gom nhóm các pattern lại với nhau.
VD: Kiểm tra xem chuỗi có chứa chữ 'thank' không.
38
\
Ký tự này giúp phân biệt chuỗi sau nó không phải là ký tự đặc biệt.
VD: Kiểm tra xem đầu chuỗi có phải là dấu . không.
Pattern Mô tả
39
So khớp với số nguyên.
\d
... ...
2, Các flags trong Python.
Một số các flags hay dùng trong Python:
I hoặc IGNORECASE - Không phân biệt hoa thường khi so khớp.
L hoặc LOCALE - So Khớp với locate hiện tại.
M hoặc MULTILINE - Thay đổi $ và ^ thành kết thúc của một dòng và bắt đầu của một
dòng thay vì mặc định là kết thúc chuỗi và bắt đầu chuỗi.
A hoặc ASCII - Thay đổi \w, \W, \b, \B, \d, \D, \S và \s thành so khớp full unicode.
S hoặc DOTALL -Thay đổi pattern . thành khớp với bất kỳ ký tự nào và dòng mới.
.....
VD: So khớp một chuỗi bắt đầu bằng v hoặc V.
3, Lời kết
40
Như vậy phần này mình đã giới thiệu xong đến mọi người cơ bản về regular Expression
trong Python rồi. Các bạn muốn tìm hiểu thêm thì tham khảo tại đây:
https://docs.python.org/3/library/re.html
41