THỰC HÀNH TOÁN RỜI RC
TÀI LIU PHC V SINH VIÊN NGÀNH KHOA HC D LIU
Nhóm biên soạn Giảng viên đóng góp ý kiến: TS. Hoàng Minh Khưu Minh Cảnh
Ngọc Thành Phạm Trọng Nghĩa - Nguyễn Công Nhựt Trần Ngọc Việt - Hoàng Thị Kiều
Anh – Huỳnh Thái Học
TP.HCM – Năm 2019
MỤC LỤC
BÀI 1: CƠ SỞ LOGIC VÀ TẬP HỢP ......................................................................................................... 3
1. Các phép toán luận lý trong Python ...................................................................................................... 3
1.1. Luận lý trong Python .................................................................................................................... 3
1.2. Biểu thức điều kiện if .................................................................................................................... 3
1.3. Thứ tự tính toán trong Python ....................................................................................................... 5
2. Dữ liệu dạng tập hợp trong Python: Set ................................................................................................ 6
3. Dữ liệu dạng tập hợp trong Sympy: FiniteSet ....................................................................................... 8
3.1. Xây dựng và các thao tác cơ bản trên tập hợp .............................................................................. 8
3.1.1. Xây dựng tập hợp .................................................................................................................. 8
3.1.2. Kim tra mt s trong mt tp hp ....................................................................................... 9
3.1.3. Tạo tập hợp rỗng ................................................................................................................. 10
3.1.4. Tạo tập hợp từ List hoặc Tuple ........................................................................................... 10
3.1.5. Loại bỏ các phần tử trùng và sắp thứ tự tập hợp ............................................................... 10
3.2. Tập con (subset), tập cha (superset) và tập các tập con (power set) ........................................... 12
3.3. Các phép toán trên tập hợp.......................................................................................................... 13
3.3.1. Union và Intersection .......................................................................................................... 14
3.3.2. Tích Descart – Cartesian Product ........................................................................................ 16
3.3.3. Áp dụng công thức cho tập nhiều biến ............................................................................... 16
3.3.4. Ứng dụng: Tính toán xác suất sự kiện A và sự kiện B cùng xảy ra ...................................... 17
BÀI TẬP CHƯƠNG 1 ................................................................................................................................ 18
BÀI 1: CƠ SỞ LOGIC VÀ TẬP HỢP
Mục tiêu:
- Nắm vững được Python để viết các đoạn lệnh xử lý về: mệnh đề, logic, đúng/sai.
- Sử dụng tốt công cụ xử lý trên tập hợp, bao gồm: định nghĩa và các phép toán.
Nội dung chính:
1. Các phép toán luận lý trong Python
1.1. Luận lý trong Python
Python kiểu dliệu luận là True False cho các phép xử == (so sánh bằng), != (so
sánh khác), <, >, is (là), is not và các phép toán liên quan là: and, or, not, ^ (XOR).
Ví dụ:
>>> a = True
>>> b = False
>>> a and b
False
>>> a or b
True
>>> a ^ b
True
1.2. Biểu thức điều kiện if
Trong Python, biểu thức điều kiện if else một trong cấu trúc rẽ nhánh bản. Cấu trúc của
lệnh if như sau:
>>> if (điều kiện 1):
# khối lệnh xử lý điều kiện 1
elif (điều kiện 2):
# khối lệnh xử lý điều kiện 2
elif (điều kiện 3…):
# khối lệnh xử lý điều kiện 3…
else: # trường hợp còn lại
# khối lệnh xử lý các trường hợp còn lại
Việc sử dụng hiệu quả cấu trúc sẽ dẫn đến chương trình tinh gọn. Sinh viên thực hành lệnh dưới
đây:
>>> def kiemtra_nuocsoi(nhiet_do):
if nhiet_do < 100:
return "Nuoc chua soi!"
else:
return "Nuoc da soi!"
>>> kiemtra_nuocsoi(100)
……….…………………………………..…………………… sinh viên ghi kết quả.
>>> kiemtra_nuocsoi(99)
……….………………………………………..……………… sinh viên ghi kết quả.
Sau đó, sinh viên thử một cách viết hàm tinh gọn như sau:
Và thực hiện các kiểm tra:
>>> kiemtra_nuocsoi1(100)
……….…………………………………..…………………… sinh viên ghi kết quả.
>>> kiemtra_nuocsoi1(99)
……….…………………………………..…………………… sinh viên ghi kết quả.
Hơn thế nữa, lệnh rẽ nhánh if được sử dụng trong “thiết kế” danh sách các giá trị. Sinh viên thực
hiện các lệnh sau:
- Xây dựng danh sách gồm các phần tử thỏa điều kiện >5:
>>> for diem_so in range(10):
if diem_so > 5:
ds_dau.append(str(diem_so))
>>> ds_dau
……….…………………………..…………………… sinh viên ghi kết quả.
Và đoạn code ngắn gọn:
>>> ds_dau = [str(diem_so) for value in range(10) if diem_so > 5]
>>> ds_dau
……….…………………………..…………………… sinh viên ghi kết quả.
1.3. Thứ tự tính toán trong Python
Bên cạnh đó, là một ngôn ngữ lập trình, các trình biên dịch Python thường xử lý phép toán từ trái
sang phải (left-to-right order). Theo đó, các biểu thức logic sẽ bị ảnh hưởng bởi thứ tự tính toán.
dụ: trong phép toán AND, nếu yếu tố đầu tiên không thỏa tngay lập tức biểu thức sẽ mang
giá trị False (sai), nhầm giảm thiểu các tính toán không cần thiết; hoặc với phép toán OR, nếu
biểu thức đầu tiên thỏa thì các biểu thức phía sau không cần tính toán.
Sinh viên thực hành các lệnh sau để hiểu được thứ tự tính toán trong Python:
Kết quả câu lệnh if là: …………………………………………………………………..
Sinh viên thực hành đoạn lệnh khác: