Bài giảng Nhập môn Tư duy tính toán: Bài 8 Một số chủ đề thú vị với python cung cấp cho người học những kiến thức như: Module và Package; Set (tập hợp) và Frozenset (tập hợp tĩnh); Dictionary (từ điển); Bài tập. Mời các bạn cùng tham khảo!
NHẬP MƠN TƯ DUY TÍNH TỐN Bài 8: Một số chủ đề thú vị với python Nội dung Module Package Set (tập hợp) Frozenset (tập hợp tĩnh) Dictionary (từ điển) Bài tập TRƯƠNG XUÂN NAM Phần Module Package TRƯƠNG XUÂN NAM Module (khối – tạm dịch) ▪ Trong python, file mã nguồn xem module ▪ Có phần mở rộng py ▪ Mọi hàm, biến, kiểu file thành phần module ▪ Sử dụng module: ▪ Có thể sử dụng thành phần module khác cách import (nhập/nạp) module đó, phương pháp để tái sử dụng lại mã nguồn ▪ Cú pháp: import ▪ Có thể import lúc nhiều module cách dấu phẩy ▪ Nếu muốn sử dụng hàm, biến module cần viết tường minh tên module ▪ Có thể import riêng nhiều hàm từ module, cú pháp: from import fuc1, fuc2,… fucN TRƯƠNG XUÂN NAM Package (gói) ▪ Package = Thư mục module (lưu trữ vật lý ổ đĩa) import numpy A = array([1, 2, 3]) A = numpy.array([1, 2, 3]) import numpy as np B = np.array([1, 2, 3]) from numpy import array C = array([1, 2, 3]) # lỗi # ok # ok # ok ▪ Module Package giúp quản lý tốt mã nguồn ▪ Nhóm hàm, biến, lớp xử lý chủ đề, giúp phân cấp sử dụng dễ dàng ▪ Giải tranh chấp định danh thư viện khác ▪ Python có nhiều package hỗ trợ nhu cầu xử lý TRƯƠNG XUÂN NAM Module math ▪ Một module thông dụng python: import math ▪ Math có nhiều số định nghĩa sẵn: ▪ ▪ ▪ ▪ ▪ pi: 3.141592… e: 2.718281… tau: 6.283185… (2 * pi) inf: dương vô (âm vô –math.inf) nan: not a number (tương đương với float('nan')) ▪ Math chứa nhiều hàm toán học: ▪ ceil(x): trả số nguyên nhỏ không nhỏ x ▪ copysign(x, y): copy dấu y gán sang x • Ví dụ: copysign(1.0, -0.0) trả -1 ▪ fabs(x): trả trị tuyệt đối x TRƯƠNG XUÂN NAM Module math ▪ Math chứa nhiều hàm toán học (tiếp…): ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ factorial(x): trả x! floor(x): trả số nguyên lớn không vượt x gcd(a, b): trả ước số chung lớn a b isinf(x): trả True x dương/âm vô isnan(x): trả True x NaN (not a number) trunc(x): trả phần nguyên x exp(x): trả ex log(x[, y]): trả logy x, mặc định y = e log10(x): trả log10 x pow(x, y): trả xy sqrt(x): trả 𝑥 TRƯƠNG XUÂN NAM Module math ▪ Math cung cấp số hàm lượng giác: ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ degrees(x): chuyển x từ radians sang độ radians(x): chuyển x từ độ sang radians acos(x): trả arc cos x (độ đo radians) asin(x): trả arc sin x (độ đo radians) atan(x): trả arc tang x (độ đo radians) cos(x): trả cos x (độ đo radians) sin(x): trả sin x (độ đo radians) tan(x): trả tang x (độ đo radians) TRƯƠNG XUÂN NAM Phần Set (tập hợp) Frozenset (tập hợp tĩnh) TRƯƠNG XUÂN NAM Giới thiệu khởi tạo ▪ Set = tập hợp đối tượng (không trùng nhau) ▪ Khai báo trực tiếp cách liệt kê phần tử đặt cặp ngoặc nhọn ({}), ngăn cách phẩy >>> basket = {'apple', 'orange', 'apple', 'pear'} >>> print(basket) {'orange', 'pear', 'apple'} # xóa trùng ▪ Tạo set constructor s1 s2 s3 s4 = = = = set([1, 2, 3, 4]) set((1, 1, 1)) s1 – s2 set(range(1,100)) # # # # {1, 2, 3, 4} {1} {2, 3, 4} {1, 2, 3,…, 98, 99} TRƯƠNG XUÂN NAM 10 Khởi tạo ▪ Tạo set set comprehension # a = {'r', 'd'} a = {x for x in 'abracadabra' if x not in 'abc'} ▪ Set khơng thể chứa đối tượng mutable (có thể bị thay đổi), set lại thay đổi a = set(([1,2], [2,3])) a = set(((1,2), (2,3))) a.add("abc") # lỗi # {(1, 2), (2, 3)} # {(1, 2), "abc", (2, 3)} ▪ Frozenset giống set, bị thay đổi b = frozenset(((1,2), (2,3))) b.add("abc") TRƯƠNG XUÂN NAM # {(1, 2), (2, 3)} # lỗi 11 Các phép toán set a = set('abracadabra') b = set('alacazam') # {'d', 'r', 'c', 'b', 'a'} # {'z', 'c', 'm', 'l', 'a'} # Phép Hiệu: thuộc a không thuộc b print(a – b) # {'r', 'd', 'b'} # Phép Hợp: thuộc a b # {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} print(a | b) # Phép Giao: thuộc a b print(a & b) # {'a', 'c'} # Phép Xor: thuộc a, b # {'r', 'd', 'b', 'm', 'z', 'l'} print(a ^ b) TRƯƠNG XUÂN NAM 12 Các phương thức set ▪ Một số phương thức thường hay sử dụng ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ add(e): thêm e vào tập hợp clear(): xóa phần tử tập hợp copy(): tạo tập hợp difference(x): tương đương với phép trừ x difference_update(x): loại bỏ phần tử x khỏi tập discard(e): bỏ e khỏi tập remove(e): bỏ e khỏi tập, báo lỗi khơng tìm thấy e union(x): tương đương với phép hợp với x intersection(x): tương đương với phép giao với x TRƯƠNG XUÂN NAM 13 Các phương thức set ▪ Một số phương thức thường hay sử dụng ▪ isdisjoint(x): trả True tập khơng có phần chung với x ▪ issubset(x): trả True tập x, tương đương với phép so sánh =x ▪ pop(): lấy phần tử khỏi tập (không biết trước) ▪ symmetric_difference(x): tương đương với phép ^x TRƯƠNG XUÂN NAM 14 Phần Dictionary (từ điển) TRƯƠNG XUÂN NAM 15 Dictionary (từ điển) ▪ Từ điển danh sách từ (key) định nghĩa (value) ▪ Yêu cầu key khơng trùng nhau, xem từ điển loại set ▪ Từ điển khai báo theo cú pháp set >>> dic = {1:'one', 2:'two', 3:'three'} >>> print(dic[1]) 'one' >>> dic[4]='four' >>> print(dic) {1: 'one', 2: 'two', 3: 'three', 4: 'four'} TRƯƠNG XUÂN NAM 16 Dictionary (từ điển) ▪ Chú ý: loại liệu immutable (khơng thể thay đổi) dùng làm key từ điển dic = { (1,2,3):"abc", 3.1415:"abc"} dic = { [1,2,3]:"abc"} # lỗi ▪ Một số phép toán / phương thức thường dùng ▪ ▪ ▪ ▪ ▪ ▪ len(d): trả độ dài từ điển (số cặp key-value) del d[k]: xóa key k (và value tương ứng) k in d: trả True có key k từ điển k not in d: trả True khơng có key k từ điển pop(k): trả value tương ứng với k xóa cặp popitem(): trả (và xóa) cặp (key, value) tùy ý TRƯƠNG XUÂN NAM 17 Dictionary (từ điển) ▪ Một số phép toán / phương thức thường dùng ▪ get(k): lấy value tương ứng với key k • Khác phép [] chỗ get trả None k key ▪ update(w): ghép nội dung từ từ điển w vào từ điển (nếu key trùng lấy value từ w) ▪ items(): trả list cặp (key, value) ▪ keys(): trả key từ điển ▪ values(): trả value từ điển ▪ pop(k): trả value tương ứng với k xóa cặp ▪ popitem(): trả (và xóa) cặp (key, value) tùy ý TRƯƠNG XUÂN NAM 18 Dictionary (từ điển) ▪ Dùng zip để ghép list thành từ điển >>> l1 = ["a","b","c"] >>> l2 = [1,2,3] >>> c = zip(l1, l2) >>> for i in c: print(i) ('a', 1) ('b', 2) ('c', 3) TRƯƠNG XUÂN NAM 19 Phần Bài tập TRƯƠNG XUÂN NAM 20 Bài tập Tạo tập hợp gồm phần tử từ đến 99, in chúng hình 2.Tạo tập hợp gồm số nguyên lẻ khoảng từ đến 199, in chúng hình 3.Tạo tập hợp gồm số nhập vào từ bàn phím (nhập dịng, cách ký tự trống), tìm in số phần tử tập, giá trị lớn nhỏ tập 4.Cho D từ điển định nghĩa cách đọc chữ số tiếng Anh, in value D theo thứ tự tăng dần 5.Nhập từ điển D, in value khác từ điển TRƯƠNG XUÂN NAM 21 Bài tập 6.Nhập từ điển D có value số nguyên, in hình giá trị value lớn 7.Nhập string S, tạo từ điển D key chữ xuất S value tương ứng số lần xuất chữ S ▪ Ví dụ: S = “dai hoc thuy loi” D = { ‘d’:1, ‘a’:1, ‘i’:2, ‘ ’:3, ‘h’:2, ‘o’:2, ‘c’:1, ‘t’:1, ‘u’:1, ‘y’:1, ‘l’:1 } TRƯƠNG XUÂN NAM 22 ... c = zip(l1, l2) >>> for i in c: print(i) ('a', 1) ('b', 2) ('c', 3) TRƯƠNG XUÂN NAM 19 Phần Bài tập TRƯƠNG XUÂN NAM 20 Bài tập Tạo tập hợp gồm phần tử từ đến 99, in chúng hình 2.Tạo tập hợp... trợ nhu cầu xử lý TRƯƠNG XUÂN NAM Module math ▪ Một module thông dụng python: import math ▪ Math có nhiều số định nghĩa sẵn: ▪ ▪ ▪ ▪ ▪ pi: 3.141592… e: 2.7 182 81… tau: 6. 283 185 … (2 * pi) inf:... radians) tan(x): trả tang x (độ đo radians) TRƯƠNG XUÂN NAM Phần Set (tập hợp) Frozenset (tập hợp tĩnh) TRƯƠNG XUÂN NAM Giới thiệu khởi tạo ▪ Set = tập hợp đối tư? ??ng (không trùng nhau) ▪ Khai báo trực