Biến và phép gán trong Python
- Biến là các vị trí bộ nhớ được dành riêng để lưu trữ dữ liệu.
- Khi một biến đã được lưu trữ, một khoảng không gian đã được cấp phát trong bộ nhớ đó.
- Dựa trên kiểu dữ liệu của một biến, trình thông dịch cấp phát bộ nhớ và quyết định những gì có thể được lưu trữ trong khu nhớ dành riêng cho biến đó.
- Bằng việc gán các kiểu dữ liệu khác nhau cho các biến, bạn có thể lưu trữ số nguyên, thập phân hoặc ký tự trong các biến này
- Trong Python, không cần khai báo biến một cách tường minh. Khi bạn gán bất cứ giá trị nào cho biến thì biến đó được khai báo một cách tự động. Phép gán được thực hiện bởi toán tử “=”.
- Toán hạng trái của toán tử “=” là tên biến và toán hạng phải là giá trị được lưu trữ trong biến
Ví dụ: lệnh gán total = 2 tạo ra một biến có tên là total và cho nó tham chiếu đến một đối tượng dữ liệu số có giá trị 2
- Có thể gán biến đơn hoặc gán đa biến (multiple assignment)
a=3 print(a)
b='xxx' print(b)
a=b=c=4 print(a) print(b) print(c)
a,b,c=4,5,6 print(a); print(b); print(c)
- Trong một phép gán, vế phải được tính toán giá trị, sau đó một tham chiếu đến dữ liệu kết quả được gán cho tên biến ở vế trái
- Tại thời điểm này, biến total có giá trị là kiểu số nguyên (số 2)
- Nếu một phép gán mới được tạo ra cùng với tên biến cũ, giả sử total = True (True là kiểu dữ liệu luận lý).
- Lúc này, kiểu dữ liệu của biến total được thay đổi thành kiểu luận lý theo giá trị được tham chiếu của phép gán
–> Đây là đặc tính động của Python (dynamic characteristic)
–> Biến có thể thay đổi kiểu dữ liệu!
Các kiểu dữ liệu trong Python
Python có 5 kiểu dữ liệu chuẩn
Kiểu luận lý (boolean)
- Kiểu giá trị luận lý thường dùng trong các biểu thức điều kiện khi lập trình (if, while)
- Kiểu luận lý chỉ có 2 kết quả là True (hay 1) hoặc False (hay 0)
- Các toán tử: and, or, not
Ví dụ:
>>> 2 > 1 True
>>>b = 1 > 5 >>>b
>>>True and False False
>>>True >= False True
>>>True is 1 False
>>>True == 1 True
>>>5 is 5 True
>>>True and 1 1
>>>1 and True True
1. Numeric types (Kiểu số)
- Kiểu dữ liệu Number lưu trữ các giá trị số.
- Chúng là các kiểu dữ liệu immutable, hay là kiểu dữ liệu không thay đổi, nghĩa là các thay đổi về giá trị của kiểu dữ liệu số này sẽ tạo ra một đối tượng được cấp phát mới
- Các đối tượng Number được tạo khi bạn gán một giá trị cho chúng
Ví dụ:
>>>var1=3 >>>var2=5
- Xóa tham chiếu tới một đối tượng Number: sử dụng lệnh del
>>>del var1 >>>var1 NameError: name ‘var1' is not defined
>>>a,b,c=1,2,3 >>>del a,b
Các kiểu dữ liệu số thường dùng
- Kiểu int: kiểu số nguyên không có dấu thập phân.
- Kiểu float: số thực với dấu thập phân. Kiểu này cũng có thể được viết ở dạng số mũ của 10 với E hoặc e như (2.5e2 = 2.5 x 102 = 250)
- Kiểu complex: số phức trong dạng a + bj, với a và b là số thực và j (hoặc J) biểu diễn căn bậc hai của -1
Ví dụ:
>>> a = 2 >>> print(a)
>>> b = 2. >>> print(b)
>>> c = 2 + 3j >>> print(c)
>>> d = 5 + 2e2 >>> print(d)
Các hàm số học thường dùng
>>> import math >>> from math import *
Hàm | Miêu tả |
abs(x) | |x| |
int(x) | Chuyển thành số nguyên |
float(x) | Chuyển thành số thực |
complex(re, im) | Chuyển thành số phức |
c.conjugate() | Liên hợp của số phức c |
pow(x, y) | xy |
x**y | xy |
Hàm | Miêu tả |
math.trunc(x) | |
math.floor(x) | |
math.ceil(x) | |
math.sqrt(x) | Căn bậc 2 của x |
math.exp(x) | e**x |
math.log(x) | ln(x) |
math.log10(x) | log(x) cơ số 10 |
math.log(x,n) | log(x) cơ số n |
2. Text Sequence Type – str
- String là một trong các kiểu phổ biến nhất trong Python
- String trong Python là immutable
- Có thể tạo các chuỗi bằng cách bao một text trong một trích dẫn đơn hoặc trích dẫn kép. Python coi các lệnh trích dẫn đơn và kép là như nhau
Ví dụ:
>>> text1 = 'I will be an engineer' >>> print(text1)
>>> text2 = "I will be a CAE engineer" >>> print(text2)
Truy cập các giá trị trong String:
- Python không hỗ trợ kiểu chữ cái; chúng được coi như các chuỗi có độ dài là 1.
- String được lưu dạng các ký tự đơn trong vị trí ô nhớ liên tiếp nhau
- String là có thể được truy cập từ cả hai hướng, dùng cú pháp
– tiến về trước forward (bắt đầu từ 0)
– ngược về sau backward (bắt đầu từ -1)
Ví dụ:
>>>var1 = 'Hello Python!' >>>var2 = “I am a CAE engineer" >>>print("var1[0]: ", var1[0]) var1[0]: H
>>>print("var2[1:5]: ", var2[1:5]) var2[1:5]: am
>>>print("var2[1:5]: " + var2[1:5]) var2[1:5]: am
>>>var1 = 'Hello Python!' >>>var2 = “I am a CAE engineer"
>>>print(var1[:6] + 'How are you? ') Hello How are you?
>>>print(var1[:6 ] , 'How are you? ') Hello How are you?
>>>print(var1[-3:]) on!
>>>print(var1[-4:-2]) ho
Các toán tử thường dùng trong chuỗi
- Nối các chuỗi:
>>> 'Today ' + 'is ' + ‘Tuesday'
>>> 'abc ' + 3 #lỗi vì khác kiểu dữ liệu
- Lặp chuỗi:
>>> 3*'Today'
>>> "Today"*3
- Các toán tử thành phần trong chuỗi: in, not in
>>> text1 = "Today is Tuesday" >>> "is" in text1 True
>>> "si" in text1 False >>> "si" not in text1 True
Các toán tử quan hệ để thao tác với String: <,>, <=, >=, ==, !=, <>
Các chuỗi được so sánh dựa trên giá trị ASCII
>>> “Today” == “Today” True
>>> “Today” == “today” False
>>> “T” < “t” True
Các toán tử định dạng chuỗi
>>> print("Bill Gates has %d billions %s" % (100, “USD”)) >>> print("Bill Gates has %e billions %s" % (100, “USD”)) >>> print("Bill Gates has %f billions %s" % (100, “USD”))
Xử lý các ký tự đặc biệt
\n : ký tự xuống hàng
\t : ký tự tab
>>> print("ky tu \n dung de xuong hang") ky tu dung de xuong hang
>>> print(r"ky tu \n dung de xuong hang") ky tu \n dung de xuong hang
>>> print("ky tu ""\t"" dung de TAB") ky tu dung de TAB
>>> print("ky tu "r"\t"" dung de TAB") ky tu \t dung de TAB
‘ : chuỗi có dấu nháy đơn
Cách 1: dùng định dạng chuỗi bằng dấu nháy kép
>>> "It isn't" "It isn't"
Cách 2: dùng ký tự \ để thoát cặp nháy đơn
>>> 'It isn\'t' 'It isn’t'
“ : chuỗi có dấu nháy kép
dùng định dạng chuỗi bằng dấu nháy đơn
>>> 'She said: " I love you! "'
Một số hàm xử lý chuỗi
>>> text = “today” >>> text.capitalize() Today
>>> text = “today is Tuesday” >>> text.count(“day”, 0, 7) >>> text.count(“day”, 0, 20)
>>> text = “today is Tuesday” >>> text.upper() >>> text.lower()
>>> text = “today is Tuesday” >>> len(text)
>>> text = “today is Tuesday” >>> text.replace(“day”,”Tuesday”,1)
3. List
- List trong Python là cấu trúc dữ liệu có khả năng lưu giữ các kiểu dữ liệu khác nhau
- List trong Python là kiểu thay đổi (mutable), nghĩa là Python sẽ không tạo một List mới khi một phần tử trong List bị sửa đổi
- List giữ các đối tượng khác nhau trong một thứ tự đã cho. Các hoạt động khác nhau như chèn hoặc xóa có thể được thực hiện trên List
- Một List có thể được tạo ra bởi lưu trữ một dãy các kiểu giá trị khác nhau được phân biệt bởi các dấu phẩy
Cúpháp để tạo List: <list_name>=[giatri1, giatri2, …, giatriN];
>>> ckt19 = [“CKT19”, “GV: Nguyen Thanh Nha”, 54, 4] >>> diemThi = [5, 8, 9, 10, 2]
Truy xuất giá trị trong List
- Tương tự như String, List có thể được truy xuất từ cả hai hướng
– tiến về trước forward (bắt đầu từ 0)
– ngược về sau backward (bắt đầu từ -1)
- Cú pháp truy cập giá trị List: < list_name >[index]
>>> ckt19 = [“CKT19”, “GVCN: Nguyen Thai Hien”, 54, 46] >>> ckt19[0] 'CKT19‘ >>> ckt19[0:2] [“CKT19”, “GVCN: Nguyen Thai Hien”] >>> ckt19[-1] 46
VD 2 cách đánh chỉ số trong Python:
– Từ <Start> đến <End>: bắt đầu từ 0, tăng dần.
– Từ <End> đến <Start>: bắt đầu từ -1, giảm dần.
Vídụ:
List1[1] = List1[-6] = B List1[3] = List1[-4] = D
Để trích xuất một số đối tượng con từ đối tượng đã có:
Cú pháp: <list_name>[Start:Stop:Step]
Trong đó, < list_name> là tên của đối tượng cần cắt lát (có thể là string, list, array, …)
- Start là chỉ số của phần tử bắt đầu
- Stop là chỉ số của phần tử kết thúc
- Step là bước nhảy
Lát cắt này bao gồm các phần tử từ vị trí <Start> đến trước vị trí <Stop> (khôngbaogồmphầntử <Stop>)
Ví dụ:
>>> list1 = ['a','b','c','d','e','f','g'] >>> list1[1:3] ['b', 'c']
>>> list1 = ['a','b','c','d','e','f','g'] >>> list1[0:6:2] ['a', 'c', 'e']
Các thao tác cơ bản trên List
- Phép cộng + và phép nhân * -> Tạo ra List mới
>>> list1 = [2, 3, 5, 4] >>> list2 = [“a”, “b”, “c”] >>> list3 = list1 + list2 >>> list3 [2, 3, 5, 4, “a”, “b”, “c”]
>>> list4 = 2*list1 >>> list4 [2, 3, 5, 4, 2, 3, 5, 4]
- List trong List
>>> list1 = [2, 3, 5, 4] >>> list5 = [0, 1, 0, list1] >>> list5 [0, 1, 0, [2, 3, 5, 4]]
>>> list5[3] [2, 3, 5, 4] >>> list5[3][1] 3
Các thao tác cơ bản trên List: cập nhật giá trị
- Có thể cập nhật một hoặc nhiều phần tử của List bằng phép gán giá trị cho vị trí cụ thể trong List
- Cú pháp: <list_name>[index]=<value>
>>> list1 = [2, 3, 5, 4] >>> list1[1] = 'xyz' >>> list1 [2, 'xyz', 5, 4]
Các thao tác cơ bản trên List: thêm giá trị vào cuối
- Có thể thêm một hoặc nhiều phần tử vào cuối List bằng lệnh append
- Cú pháp: <list_name>.append(item)
>>> list1 = [2, 3, 5, 4] >>> list1.append(6) >>> list1 [2, 3, 5, 4, 6]
>>> list1 = [2, 3, 5, 4] >>> list1.append([6, “a”]) >>> list1 [2, 3, 5, 4, [6, 'a']]
Chú ý: Chỉ có 1 thông số item trong lệnh append
>>> list1.append(6,'a') TypeError: append() takes exactly one argument (2 given)
Các thao tác cơ bản trên List: xóa phần tử
- Có thể xóa một hoặc nhiều phần tử trong List bằng lệnh del (biết trước vị trí cần xóa)
- Cú pháp: del <list_name>[index]
>>> list1 = [2, 3, 5, 4, 'a'] >>> del list1[1] >>> list1 [2, 5, 4, 'a']
>>> list1 = [2, 3, 5, 4, 'a'] >>> del list1[2:4] >>> list1 [2, 3, 'a']
- Có thể xóa một phần tử trong List bằng lệnh remove (biết trước giá trị cần xóa)
- Cú pháp: <list_name>.remove(item)
>>> list1 = [2, 3, 5, 4, 'a'] >>> list1.remove(5) >>> list1 [2, 3, 4, 'a']
Một số hàm và phương thức thường dùng trên List
Hàm | Miêu tả |
cmp(list1, list2) | So sánh các phần tử trong hai list |
len(list) | Trả về độ dài của list |
max(list), min(list) | Trả về phần tử có giá trị lớn nhất/nhỏ nhất trong list |
Phương thức | Miêu tả |
list.count(obj) | Đếm số lần obj xuất hiện trong list |
list.extend(seq) | Thêm list seq vào sau list |
list.reverse() | Đảo ngược các thành phần |
list.sort() | Sắp xếp các thành phần từ nhỏ đến lớn |
4. Tuple
- Tuple là dãy các đối tượng không thay đổi (immutable) trong Python, vì thế tuple không thể bị thay đổi. Các tuple cũng là các dãy giống như List
- Các đối tượng trong tuple được phân biệt bởi dấu phẩy và được bao quanh bởi dấu ngoặc đơn (). Nếu các dấu ngoặc đơn không được cung cấp với một dãy, thì nó được coi như là tuple
- Giống như chỉ số của chuỗi và list, chỉ mục của tuple bắt đầu từ 0
- Cú pháp tạo Tuple: <tuple_name>=(value1, value2, …, valueN)
>>> ckt16 = (“CKT16”, “GVCN: PQH”, 54, 46) >>> diemThi = 5, 8, 9, 10, 2 >>> diemKT = ()
Chú ý: Nếu tuple có 1 phần tử đơn thì phải có dấu phẩy cuối
>>> tuple1 = (5,)
Truy xuất các giá trị trong Tuple
- Tương tự như List, Tuple có thể được truy xuất từ cả hai hướng
– tiến về trước forward (bắt đầu từ 0)
– ngược về sau backward (bắt đầu từ -1)
- Cú pháp truy cập giá trị Tuple: <Tuple_name>[index]
>>> t1=(1,3,2,"x","y") >>> t1[0:2] (1, 3)
>>> t1=(1,3,2,”x”,”y”) >>> t1[-1] ‘y’
- Tuple trong Tuple
>>> t2=(1,3,2,(”x”,”y”)) >>> t2 (1, 3, 2, ('x', 'y'))
>>> t2=(1,3,2,(”x”,”y”)) >>> t2[3][0] ‘x’
Các thao tác cơ bản trên Tuple
- Phép cộng + và phép nhân * -> Tạo ra Tuple mới
>>> t1 = (2, 3, 5, 4) >>> t2 = (“a”, “b”, “c”) >>> t3 = list1 + list2 >>> t3 (2, 3, 5, 4, “a”, “b”, “c”)
>>> t4 = 2*t1 >>> t4 (2, 3, 5, 4, 2, 3, 5, 4)
- Xóa Tuple: del <Tuple_name>
>>> del t4 >>> t4
Chú ý:
- Không thể xóa các phần tử đơn trong tuple
- Không thể cập nhất giá trị các phần tử trong tuple
Một số hàm thường dùng trên Tuple
Hàm | Miêu tả |
cmp(tuple1, tuple2) | So sánh các phần tử trong hai tuple |
len(tuple) | Trả về độ dài của tuple |
max(tuple), min(tuple) | Trả về phần tử có giá trị lớn nhất/nhỏ nhất trong tuple |
list.count(obj) | Đếm số lần obj xuất hiện trong tuple |
5. Dictionary
- Dictionary là một tập hợp các cặp key và value không có thứ tự
- Dictionary là một container chứa dữ liệu, được bao quanh bởi cặp dấu ngoặc nhọn { }. Mỗi cặp key-value được xem như là một item
- Key mà đã truyền cho item đó phải là duy nhất, trong khi đó value có thể là bất kỳ kiểu giá trị nào
- Key phải là một kiểu dữ liệu không thay đổi (immutable) như chuỗi, số hoặc tuple
- Key và value được phân biệt riêng rẽ bởi một dấu hai chấm (:). Các item phân biệt nhau bởi một dấu phẩy (,)
Cú pháp tạo Dictionary
<dict_name>={key1:value1,key2:value2 …, keyN:valueN}
>>> char1 = {'Name':'Mr. Bean', 'Born': 1960, 'Heigh': 170} >>> char2 = {'Name':'Mr. Bean', 'Born': 1960, ['Heigh‘, 'Weight']: 170}
Chú ý:
Khi có nhiều key giống nhau, phép gán cuối được thực hiện à chỉ truy xuất được value ứng với key cuối đó
>>> char3 = {'Name':'Hector', 'Born': 1960, 'Heigh': 180, 'Born': 1970} >>> char3['Born']
Truy xuất giá trị trong Dictionary
Cú pháp: <dict_name>[key]
>>> char1 = {'Name':'Mr. Bean', 'Born': 1960, 'Heigh': 170} >>> char1['Born'] 1960 >>> char1['Die']
Cập nhật giá trị trong Dictionary
Cú pháp: <dict_name>[key] = newValue
data1={'ID':100, 'Name':'Thanh', 'Job':'Developer'} data2={'ID':101, 'Name':'Chinh', 'Job':'Trainer'} data1['Job']='Manager‘ # Cập nhật Job cho data1 data2['SalaryLevel']=1000 # thêm 1 item cho dict data2 data1['SalaryLevel']=10000
Xóa phần tử trong Dictionary
Cú pháp: del <dict_name>[key]
>>> char1 = {'Name':'Mr. Bean', 'Born': 1960, 'Heigh': 170} >>> del char1['Born'] >>> char1
Xóa cả Dictionary
Cú pháp: del <dict_name>
>>> del char1 >>> char1
Một số hàm và phương thức thường dùng trong Dictionary
Hàm | Miêu tả |
cmp(dict1, dict2) | So sánh các phần tử trong hai dict |
len(dict) | Trả về độ dài của dict |
str(dict) | Trả về chuỗi có thể in ra được cho dict |
Phương thức | Miêu tả |
dict.clear() | Xóa tất cả phần tử của dict |
dict.copy() | Trả về bản sao của dict |
dict.get(key) | Trả về giá trị của key đã cho. Nếu key không có mặt thì phương thức này trả về None |
dict.has_key(key) | Trả về true nếu key là có mặt trong Dictionary, nếu không là false |