Professional Documents
Culture Documents
Python cơ bản
Phần này sẽ giới thiệu Python cơ bản cho những người mới chưa học lập trình, hoặc từ ngôn ngữ
khác chuyển qua dùng Python. Nội dung được tham khảo từ đây
Để khai báo biến trong Python không cần chỉ định kiểu dữ liệu trước như những ngôn ngữ
khác mà khi ta gán dữ liệu cho biến thì python tự gán kiểu phù hợp cho biến.
# variable_name = value
x = 3
2.1.1 Số
Số nguyên và số thực dùng như các ngôn ngữ khác
x = 3
print(type(x)) # Prints "<class 'int'>"
34 Chương 2. Python cơ bản
2.1.3 Chuỗi
Python có hỗ trợ dạng chuỗi, để lưu giá trị dạng chuỗi có thể để trong dấu " hoặc ’ nhưng mở bằng
dấu nào phải đóng bằng dấu đấy.
# greet = "hello' # câu lệnh này lỗi
hello = 'hello' # gán giá trị chuỗi cho biến, chuỗi đặt trong 2 dấu '
world = "world" # chuỗi cũng có thể đặt trong dấu ".
print(hello) # Prints "hello"
print(len(hello)) # Độ dài chuỗi; prints "5"
hw = hello + ' ' + world # Nối chuỗi bằng dấu +
print(hw) # prints "hello world"
hw12 = '{} {} {}'.format(hello, world, 12) # Cách format chuỗi
print(hw12) # prints "hello world 12"
Kiểu string có rất nhiều method để xử lý chuỗi.
s = "hello"
print(s.capitalize()) # Viết hoa chữ cái đầu; prints "Hello"
print(s.upper()) # Viết hoa tất cả các chữ; prints "HELLO"
print(s.replace('l', '(ell)')) # Thay thế chuỗi; prints "he(ell)(ell)o"
print(' world '.strip()) # Bỏ đi khoảng trắng ở đầu và cuối chuỗi;
# prints "world"
print('Nguyen Thanh Tuan'.split()) # Split chuỗi ra list, phân tách bằng 1 hoặc nhiều
# khoảng trắng ; prints ['Nguyen', 'Thanh', 'Tuan']
print(' '.join(['Nguyen', 'Thanh', 'Tuan']) # Join các phần tử trong list lại với nhau,
# các phần tử cách nhau bằng 1 khoảng trắng;
# prints "Nguyen Thanh Tuan"
2.2 Containers 35
2.2 Containers
Các kiểu dữ liệu cơ bản chỉ chứa một giá trị mỗi biến (số, chuỗi), tuy nhiên nhiều lúc mình cần chứa
nhiều giá trị, ví dụ chứa tên học sinh trong một lớp có 100 bạn. Mình không thể tạo 100 biến để
lưu tên 100 bạn. Vậy nên cần các kiểu dữ liệu có thể chứa nhiều giá trị khác nhau. Đó là container
(collection). Python có một số container như: list, tuple, set, dictionary. Dưới tôi sẽ trình bày hai
kiểu dữ liệu collection mà mọi người hay gặp nhất trong python là list và dictionary.
2.2.1 List
List trong Python giống như mảng (array) nhưng không cố định kích thước và có thể chứa nhiều
kiểu dữ liệu khác nhau trong 1 list.
Slicing Thay vì lấy từng phần tử một trong list thì python hỗ trợ truy xuất nhiều phần tử 1 lúc gọi là
slicing.
2.2.2 Dictionaries
Dictionaries lưu thông tin dưới dạng key, value.
36 Chương 2. Python cơ bản
d = {'cat': 'cute', 'dog': 'furry'} # Tạo dictionary, các phần tử dạng key:value
print(d['cat']) # Lấy ra value của key 'cat' trong dictionary prints "cute"
print('cat' in d) # Kiểm tra key có trong dictionary không; prints "True"
d['fish'] = 'wet' # Gán key, value, d[key] = value
print(d['fish']) # Prints "wet"
# print(d['monkey']) # Lỗi vì key 'monkey' không trong dictionary
del d['fish'] # Xóa phần tử key:value từ dictionary
# Duyệt value
for legs in d.values():
print('%d legs' % (legs))
# Prints "2 legs", "4 legs", "8 legs"
2.3 Function
Function (hàm) là một khối code python được thực hiện một hoặc một số chức năng nhất định. Hàm
có input và có ouptut, trước khi viết hàm mọi người nên xác định hàm này để làm gì? input là gì?
output làm gì?
Ví dụ hàm kiểm tra số nguyên tố, mục đích để kiếm tra 1 số xem có phải là số nguyên tố hay không,
input là 1 số nguyên dương, output dạng boolean (True/False). True tức là số input là số nguyên tố,
False nghĩa là không phải số nguyên tố.
print(sign(x))
# Prints "negative", "zero", "positive"
Muốn nhập thư viện vào chương trình, ta dùng cú pháp: import tên thư viện, ví dụ: import numpy.
Đối với những thư viện có tên dài, ta thường rút ngắn lại để sau này dễ sử dụng. Khi đó, ta
sử dụng cú pháp: import tên thư viện as tên rút gọn, ví dụ: import matplotlib.pyplot as plt. Sau này,
khi sử dụng đến thư viện, ta chỉ cần gọi đến tên rút gọn thay vì phải gõ lại tên đầy đủ của thư viện,
ví dụ thay vì viết matplotlib.pyplot.plot, ta chỉ cần viết plt.plot.
Mảng trong numpy gồm các phần tử có dùng kiểu giá trị, chỉ số không âm được bắt đầu từ
0, số chiều được gọi là rank của mảng Numpy, và shape của mảng là một tuple các số nguyên đưa
ra kích thước của mảng theo mỗi chiều.
import numpy as np
Ngoài ra có những cách khác để tạo array với giá trị mặc định
import numpy as np
e = np.random.random((2,2)) # Tạo array với các phần tử được tạo ngẫu nhiên
print(e) # Might print "[[ 0.91940167 0.08143941]
# [ 0.68744134 0.87236687]]"
import numpy as np
# Dùng slide để lấy ra subarray gồm 2 hàng đầu tiên (1 & 2) và 2 cột (2 & 3).
# Output là array kích thước 2*2
# [[2 3]
# [6 7]]
b = a[:2, 1:3]
Bên cạnh đó cũng có thể dùng các chỉ số với slice index. Tuy nhiên số chiều array sẽ giảm đi.
import numpy as np
import numpy as np
x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)
# Tính tổng
# [[ 6.0 8.0]
# [10.0 12.0]]
print(x + y)
print(np.add(x, y))
# Phép trừ
# [[-4.0 -4.0]
# [-4.0 -4.0]]
print(x - y)
print(np.subtract(x, y))
Phép toán * dùng để nhân element-wise chứ không phải nhân ma trận thông thường. Thay vào đó
dùng np.dot để nhân 2 ma trận.
import numpy as np
x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
v = np.array([9,10])
w = np.array([11, 12])
# [[19 22]
# [43 50]]
print(x.dot(y))
print(np.dot(x, y))
Numpy cũng hỗ trợ tính tổng array theo các chiều khác nhau
import numpy as np
x = np.array([[1,2],[3,4]])
2.5.3 Broadcasting
Broadcasting là một kĩ thuật cho phép numpy làm việc với các array có shape khác nhau khi thực
hiện các phép toán.
import numpy as np
# Cộng vector v với mỗi hàng của ma trận x, kết quả lưu ở ma trận y.
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = np.empty_like(x) # Tạo 1 array có chiều giống x
print(y)
# Kết quả của y
# [[ 2 2 4]
# [ 5 5 7]
# [ 8 8 10]
# [11 11 13]]
2.6 Matplotlib
Thư viện matplotlib dùng để vẽ đồ thị. Phần này tôi đi qua các tính năng cơ bản của module
matplotlib.pyplot
2.6 Matplotlib 41
import numpy as np
import matplotlib.pyplot as plt
Ta có thể vẽ nhiều đường trên 1 đồ thị cũng như thêm tên đồ thị, tên trục x, y cũng như tên các
đường tương ứng lên đồ thị.
import numpy as np
import matplotlib.pyplot as plt
Bên cạnh đấy ta có thể vẽ nhiều subplot và mỗi đồ thị trên 1 subplot riêng.
import numpy as np
import matplotlib.pyplot as plt
plt.plot(x, y_sin)
plt.title('Sine')
plt.plot(x, y_cos)
plt.title('Cosine')
plt.show()
2.6 Matplotlib 43