TRƯỜNG ĐẠI HỌC KINH TẾ ĐHĐN KHOA THỐNG KÊ TIN HỌC
BÀI TẬP NHÓM
CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
NHÓM: NHÓM 6
GVHD : HOÀNG THỊ THANH HÀ
STT
1
2
3
4
5
SVTH
Trần Thảo Nhi
Hồ Nguyễn Khánh Linh
Nguyễn Thị Anh Thoa
Phạm Thị Hoa Mai
Trần Thanh Phong
Đà Nẵng, 2/2022
MỤC LỤC
1. Logic:............................................................................................... 1
a. Định nghĩa:................................................................................... 1
b. Các phép toán trên kiểu Boolean:................................................ 2
c. Thứ tự ưu tiên toán tử logic trong Python:................................... 3
2. Numeric:..........................................................................................4
a. Định nghĩa:................................................................................... 4
b. Ví dụ.............................................................................................. 5
3. Sequences.........................................................................................6
a. Định nghĩa:................................................................................... 6
b. Các loại Sequences cơ bản:..........................................................7
4. Mapping:......................................................................................... 8
a. Định nghĩa:................................................................................... 8
b. Các loại Mapping:........................................................................ 9
BẢNG PHÂN CÔNG CÔNG VIỆC................................................... 10
2|Page
CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG PYTHON:
1. None:
a. Định nghĩa:
Từ khóa None được sử dụng để xác định một biến null hoặc một đối tượng.
Trong Python,từ khóa None là một đối tượng và nó là một kiểu dữ liệu của
lớp NoneType.
Chúng ta có thể gán None cho bất kỳ biến nào, nhưng bạn không thể tạo các
đối tượng NoneType khác.
Các kiểu dữ liệu của None:
Kiểu dữ liệu
Phép toán Phần tử
khơng
Ví dụ
Sốngun
+
0
0+69 = 69 + 0
Sốthực
+
0.0
0.0 +96.0 = 96.0 +0.0
Danh sách
Extend, +
[]
[1] + [] = [] + [1] = [1]
Tuple
+
()
(1,)+() = () + (1,)=(1,)
Tập hợp
union
set([])
set([1]).union(set([]))=
set([]).union(set([1]))= set([1])
Chuỗi
+
‘’ ‘’
Từ điển
update
{}
Số phức
+
0+0j
Logic
or
False
‘’abc’’+ “” = ‘’ ‘’ + ‘’abc‘’ = ‘’abc ‘’
{1:1}.update({})={}.update({1:1})
={1:1}
False or True = True or False =
True
b. None và các toán tử logic:
None là một tập hợp đặc biệt, chỉ có chính nó, mà cũng khơng phải chính nó vì
None bao hàm ý nghĩa thiếu giá trị:
None tương tác với tất cả phần tử không:
Nếu ta gọi S là tập hợp các phần tử khơng, bao gồm chính None, thì với phép
tốn and, None chính là phần tử khơng bên phải của S. None cũng chính là giá
trị.
Tuy nhiên:
None là phần tử không bên phải đối với tập S nói trên trong phép tốn or.
Qua đây ta thấy được thứ tự các toán hạng là điều cần phải lưu ý.
Phép toán or giữa None và object bất kỳ không phải là phần tử không mà là ánh
xạ đồng nhất bất kể thứ tự phép toán:
Phép tốn and thì ln trả kết quả về None với bất kỳ phần tử nào không phải là
không, không kể thứ tự toán hạng:
Một biểu thức logic chứa None có thể trả về None, nghĩa là khơng có giá trị
None là tận cùng, là nhỏ hơn tất cả
None chính là None
c. Các ví dụ:
None và is
None và ==
None là giá trị
None và None
None và False
None với chuỗi rỗng
2. Logic:
a. Định nghĩa:
Kiểu bool (Boolean) trong Python là kiểu dữ liệu chỉ có 2 kết quả trả về là
True và False. True và False là 2 từ khóa trong Python.
Lưu ý: 2 từ khóa True và False phải được viết hoa chữ cái đầu tiên “T” và
“F”, nếu khơng sẽ gặp lỗi.
Ví dụ:
Python cho phép chuyển đổi các kiểu dữ liệu khác sang kiểu dữ liệu Boolean
bằng cách sử dụng hàm bool(). Những giá trị sau đây được trả về kết quả False:
False
Kiểu None
Số nguyên, số thập phân, số phức nếu số đó bằng 0
Chuỗi rỗng (khơng chứa bất kì kí tự nào)
Tất cả các giá trị khác được trả về kết quả True.
Ví dụ:
b. Các phép tốn trên kiểu Boolean:
Một số phép tốn thơng dụng trên kiểu bool: not, ==, !=, or, and.
Quy tắc:
A
B
not A
not B
A == B
A != B
A or B
A and B
T
F
F
T
F
T
T
F
F
T
T
F
F
T
T
F
T
T
F
F
T
F
T
T
F
F
T
T
T
F
F
F
Ví dụ:
c. Thứ tự ưu tiên tốn tử logic trong Python:
Quy tắc:
Trong trường hợp có nhiều tốn tử logic trong python cùng tồn tại trong một biểu
thức thì thứ tự ưu tiên xử lý của chúng như sau:
not > and > or
11 | P a g e
Biến Python Boolean yêu cầu tối thiểu 24 bytes trên hệ thống 32 bit / 64 bit
3. Numeric:
a. Định nghĩa:
Trong Python, loại dữ liệu số biểu thị dữ liệu có giá trị số. Giá trị số có thể là
số nguyên, số thực hoặc thậm chí là số phức. Các giá trị này được định nghĩa
là INT, FLOAT và COMPLEX trong Python.
Set of values
Type
Size
Integer
int
24 bytes
float
24 bytes
Floating-point
number
Complex
complex 32 bytes
Tất cả các loại dữ liệu số ( trừ complex ) đều thực hiện được các phép tính
sau :
b. Ví dụ :
Input :
x = 100
y = 3.256
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x // y)
print(x % 7)
print(12 ** 3)
myComplex1 = complex('7+5j')
myComplex2 = complex('26+8j')
res = myComplex1 + myComplex2
print(res)
print(res.conjugate())
print(divmod(x, 3))
print(Fraction(0.125))
Output :
103.256
96.744
325.59999999999997
30.712530712530715
30.0
2
1728
(33+13j)
(33-13j)
(33, 1)
1/8
4. Sequences:
Set of values Type
Size
String
str
51 bytes
List
list
56 bytes
Range
range
48 bytes
Tuple
tuple
40 bytes
a. Định nghĩa:
- Trong Python, Sequences là tập hợp có thứ tự của các kiểu dữ liệu giống
hoặc khác nhau. Sequences cho phép lưu trữ nhiều giá trị một cách có tổ
chức và hiệu quả.
- Các thao tác trình tự được sắp xếp theo thứ tự ưu tiên tăng dần:
Hoạt động
Kết quả
x in s
True nếu một phần tử của s bằng x , nếu không thì False
x not in s
False nếu một phần tử của s bằng x , nếu khơng thì True
s+t
Nối t và s
s * n hoặc n * s
Thêm s vào chính nó n lần
s[i]
Lập chỉ mục phần tử thứ i của s, mặc định = 0
s[i:j]
Cắt lát s từ i đến j
s[i:j:k]
Cắt lát s từ i đến j với khoảng cách (bước) là k
len(s)
Chiều dài của s
min(s)
Giá trị nhỏ nhất của s
max(s)
Giá trị lớn nhất của s
s.count(x)
Đếm tổng số lần xuất hiện của x trong s
- Trong đó:
s và t là các list cùng kiểu
n, i, j và k là các số nguyên
x là một giá trị bất kỳ đáp ứng mọi giới hạn về kiểu và giá trị do s áp
đặt .
b. Các loại Sequences cơ bản:
String
List
Range
Tuple
String (Chuỗi):
- Chuỗi trong Python là một tập hợp các ký tự được sắp xếp có trình tự
được sử dụng để thể hiện và lưu trữ thông tin dựa trên văn bản. Chuỗi
được lưu trữ dưới dạng các ký tự riêng lẻ trong một vị trí bộ nhớ liền kề.
- Chuỗi là dữ liệu bất biến trong Python. (Một khi được tạo, chuỗi đó khơng
thể thay đổi)
- Chuỗi được đặt trong dấu ‘ ’ hoặc dấu “ ”
- Các chuỗi có thể nối với nhau bằng tốn tử + hoặc viết liền kề nhau, và lặp
lại chuỗi bằng cách sử dụng toán tử *
- Truy cập đến kí tự trong chuỗi:
Trong Python, các kí tự của chuỗi được truy cập riêng bằng cách sử dụng
phương thức: Lập chỉ mục. Lập chỉ mục cho phép truy cập các ký tự từ
phía trước và sau của Chuỗi. Các phần tử được đánh số bắt đầu từ 0 theo
chiều trái qua phải và từ -1 theo chiều từ phải qua trái. Chỉ có thể sử dụng
số nguyên để lập chỉ mục.
- Cắt chuỗi:
- Một số hàm xử lý chuỗi:
str.capitalize( ): Hàm có tác dụng trả về một bản sao của chuỗi với ký tự
đầu tiên được viết hoa và phần cịn lại viết thường
str.center( len[char]): Hàm này có tác dụng trả về chuỗi được hiển thị ở
giữa một chuỗi.
Trong đó:
len: số lượng ký tự chuỗi mới
char: ký tự hiển thị ở 2 bên chuỗi cũ (mặc định là khoảng trắng)
Nếu len nhỏ hơn độ dài chuỗi cần xử lí thì hàm sẽ trả về chuỗi
ban đầu.
str.count(sub , start, end)
Hàm này có tác dụng đếm xem ký tự này xuất hiện bao nhiêu lần trong
chuỗi
Trong đó:
sub là chuỗi cần đếm
start là index của chuỗi cần tìm (mặc định là 0)
end là index kết thúc của chuỗi cần tìm (mặc định là -1)
List (Danh sách):
- List trong python là một dạng dữ liệu cho phép lưu trữ nhiều loại dữ liệu
khác nhau và chúng ta có thể truy cập đến các phần tử của list thong qua vị trí
của chúng.
- List có thể được xây dựng theo một số cách:
o Sử dụng một cặp dấu ngoặc vuông để biểu thị danh sách trống [ ]
o Sử dụng dấu ngoặc vuông, phân tách các mục bằng dấu phẩy [a] ,
[a, b, c]
o Sử dụng hàm tạo list: list() hoặc list(iterable)
- Truy cập giá trị của list:
Các phần tử được đánh số bắt đầu từ 0 theo chiều trái qua phải và từ -1 theo
chiều từ phải qua trái. Ký tự của chuỗi được truy cập theo công thức: List[…].
Index bắt buộc phải là một số nguyên.
- Cắt lát: Có thể truy cập đến một loạt phần tử trong list bằng cách sử dụng
toán tử cắt lát : (dấu 2 chấm).
- Một số hàm xử lí danh sách:
list.sort(reverse, key)
Hàm này có tác dụng sắp xếp lại các phần tử trong list theo một thứ tự xác
định.
Trong đó:
o reverse là 1 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.
o key là callback def để xử lý list hoặc là một lamda function
(thường được dùng để sắp xếp các list tuple hoặc dictionary).
list.append(obj): Hàm có tác dụng them vào phần cuối của một list.
Trong đó: obj là phần tử mà bạn muốn thêm vào list
ist.insert(index, val):
Hàm 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.
Trong đó:
o index là vị trí mà bạn muốn thêm phần tử val vào.
o val là phần tử mà bạn muốn thêm vào trong list.
Range:
- Hàm range() được tích hợp sẵn trong Python được sử dụng để tạo một chuỗi
các số bắt đầu từ 0 theo mặc định, tăng thêm 1 (theo mặc định) và kết thúc tại
một số được chỉ định.
- Cú pháp:
o range(stop)
Trả về một chuỗi bắt đầu từ 0 tới stop (mặc định là index -1)
Trả về 1 chuỗi rỗng nếu stop có giá trị là 0 hoặc nhỏ hơn 0.
o range(start, stop, step)
Start: là tham số bắt đầu,dãy số sẽ bắt đầu với tham số này
Stop: là điểm kết thúc của dãy số, dãy số sẽ dừng ngay khi đạt
đến tham số dừng.
Step: là số nguyên xác định khoảng cách bước đi của mỗi số
trong chuỗi
Tuple:
- Tuple trong Python là một chuỗi các phần tử có thứ tự giống như list. Sự khác
biệt giữa list và tuple là chúng ta không thể thay đổi các phần tử trong tuple
khi đã gán, nhưng trong list thì các phần tử có thể thay đổi.
- Tuple có thể được xây dựng bởi một số cách:
o Đặt tất cả các phần tử trong dấu ngoặc đơn ()
o Sử dụng dấu phẩy (,) để ngăn cách các phần tử trong tuple
o Sử dụng dấu (,) ở cuối cho một tuple đơn: (a,) hoặc a,
o Sử dụng tuple() hoặc tuple(iterable)
- Truy cập giá trị của tuple:
Các phần tử được đánh số bắt đầu từ 0 theo chiều trái qua phải và từ -1 theo
chiều từ phải qua trái. Ký tự của chuỗi được truy cập theo công thức: Tuple[…].
Index bắt buộc phải là số nguyên.
- Cắt lát: Có thể truy cập đến một loạt phần tử trong tuple bằng cách sử dụng toán
tử cắt lát : (dấu 2 chấm).
- Thay đổi một tuple:
Tuple không thể thay đổi, các phần tử trong tuple cũng không thể thay đổi sau
khi gán. Tuy nhiên nếu phần tử trong tuple có một kiểu dữ liệu có thể thay đổi
(ví dụ: list) thì các phần tử lồng nhau có thể được thay đổi. Chúng ta cũng có
thể gán giá trị khác cho tuple (gọi là gán lại - reassignment).
5. Mapping:
a. Định nghĩa:
- Chức năng mapping trong Python sử dụng hàm và các đối tượng iterable. Nó
cho phép vịng lặp, lặp qua các phần tử và áp dụng hàm chuyển đổi lên các
phần tử đó. Sau đó, nó trả về một đối tượng bản đồ lưu trữ giá trị của mục
chuyển đổi. Chức năng đầu vào có thể là bất kỳ chức năng có thể gọi nào, bao
gồm các hàm tích hợp, các hàm lambda, chức năng, lớp và phương thức do
người dùng xác định. Bây giờ, tính tốn các phép nhân tương tự như bạn đã làm
trong ví dụ trước, nhưng lần này với cả vòng lặp for và bản đồ hoạt động riêng
biệt, để hiểu chức năng Map() hoạt động như thế nào.
- Cú pháp của hàm Map () trong Python là: map(function, iterables)
Set of
values
Type
Size
Library
Dictionary Complex
Minimum: 240 bytes
PyDictionary
Set
Minimum: 224 bytes
Complex
Frozenset
Complex
Nếu đối số tích hợp đầu vào được cung
cấp, thì Frozenset được tạo từ các phần tử
lặp lại. Nếu không có đối số được cung
cấp, thì một đối tượng Frozenset rỗng
được trả về.
b. Các loại Mapping:
Dictionary:
VD1:
Input:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964 }
print(thisdict)
Output:
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964}
VD2:
Input
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964 }
print(thisdict["brand"])
Output
Ford
Set:
Ví dụ:
VD1:
Input
thisset = {"apple", "banana", "cherry"}
print(thisset)
Output
{'cherry', 'apple', 'banana'}
VD:
Input
thisset = {"apple", "banana", "cherry", "apple"}
print(thisset)
Output
{'apple', 'cherry', 'banana'}
Frozenset:
VD:
Input
mylist = ['apple', 'banana', 'cherry']
x = frozenset(mylist)
print(x)
Output
frozenset({'banana', 'apple', 'cherry'})