Bài giảng Nhập môn lập trình khoa học dữ liệu: Bài 4 Ngôn ngữ lập trình python (3) cung cấp cho người học những kiến thức như: Kiểu dữ liệu tuần tự (sequential data type); String (chuỗi); List (danh sách); Tuple (hàng); Range (miền). Mời các bạn cùng tham khảo!
NHẬP MƠN LẬP TRÌNH KHOA HỌC DỮ LIỆU Bài 4: Ngơn Ngữ Lập Trình Python (3) Nhắc lại kiến thức trước Python hỗ trợ kiểu số mạnh nhiều loại phép tính phong phú Sử dụng if cho tất nhu cầu rẽ nhánh Phép toán if cho phép viết lệnh cách tự nhiên Vịng lặp while tương tự ngơn ngữ khác Ngoại trừ việc có thêm khối else Vòng lặp for cho phép thực lặp với giá trị nhận từ danh sách Sử dụng từ khóa def để định nghĩa hàm, hàm có tham số mặc định TRƯƠNG XUÂN NAM Nội dung Kiểu liệu (sequential data type) String (chuỗi) List (danh sách) Tuple (hàng) Range (miền) Bài tập TRƯƠNG XUÂN NAM Phần Kiểu liệu (sequential data type) TRƯƠNG XUÂN NAM Kiểu liệu Kiểu liệu tuần tự: kiểu liệu chứa bên liệu nhỏ thường xử lý cách lấy phần-tử-một (bằng vòng for) Các kiểu liệu chứa bên liệu nhỏ thường gọi container (bộ chứa) Khái niệm “tuần tự” nhấn vào việc xử lý phần tử một, không thiết cách xử lý Có kiểu thông dụng list, tuple range Có nhiều kiểu khác string, bytes, bytearray,… lập trình viên tự tạo kiểu riêng theo nhu cầu TRƯƠNG XUÂN NAM Phần String (chuỗi) TRƯƠNG XUÂN NAM Kiểu chuỗi Một chuỗi xem hàng (tuple) chuỗi độ dài Trong python khơng có kiểu kí tự (character) Nội dung chuỗi không thay đổi được, ghép thêm nội dung vào chuỗi thực chất tạo chuỗi Hàm len(s) trả độ dài (số chữ) s Phép toán với chuỗi: Phép nối chuỗi (+): s = "Good" + " " + "Morning!" Phép nhân (*): s = "AB" * # số nguyên Kiểm tra nội dung: s in '1ABABABCD' # True TRƯƠNG XUÂN NAM Chỉ mục chuỗi Các phần tử (các chữ) chuỗi đánh số thứ tự truy cập vào phần tử theo số Python trì cách đánh mục khác nhau: Đánh từ trái qua phải: số đánh từ trở cuối chuỗi Đánh từ phải qua trái: số đánh từ -1 giảm dần đầu chuỗi Đ H T H U Y L O I -9 -8 -7 -6 -5 -4 -3 -2 -1 TRƯƠNG XUÂN NAM Cắt chuỗi Dựa mục, phép cắt chuỗi cho phép lấy nội dung bên chuỗi cú pháp sau [vị trí A : vị trí B] [vị trí A : vị trí B : bước nhảy] Giải thích: Tạo chuỗi đến trước • Tức chuỗi khơng gồm vị trí B Nếu khơng ghi mặc định lấy từ đầu Nếu khơng ghi mặc định đến hết chuỗi Nếu khơng ghi mặc định bước Nếu giá trị âm nhận chuỗi ngược lại TRƯƠNG XUÂN NAM Cắt chuỗi s = '0123456789' print(s[3:6]) print(s[3:]) print(s[:6]) print(s[-7:-4]) print(s[-4:-7]) print(s[-4:-7:-1]) print(s[:len(s)]) print(s[:len(s)-1]) print(s[:]) print(s[len(s)::-1]) print(s[len(s)-1::-1]) print(s[len(s)-2::-1]) # # # # # # # # # # # # 345 3456789 012345 345 654 0123456789 012345678 0123456789 9876543210 9876543210 876543210 TRƯƠNG XUÂN NAM 10 Các phương thức chuỗi Các phương thức khác join(list): ghép phần tử list phần gạch nối nội dung chuỗi, ví dụ: '-'.join(('1', '2', '3')) replace(old, new [,count]): nội dung old nội dung new, tối đa count lần count(sub, [start, [end]]): đếm số lần xuất sub startswith(prefix): kiểm tra đầu có prefix khơng endswith(prefix): kiểm tra cuối có prefix khơng find(sub[, start[, end]]): tìm vị trí sub (-1: khơng có) rfind(sub[, start[, end]]): find tìm từ cuối islower(), isupper(), istitle(), isdigit(), isspace() TRƯƠNG XUÂN NAM 16 Phần List (danh sách) TRƯƠNG XUÂN NAM 17 Giới thiệu khai báo List = dãy đối tượng (một loại array đa năng) Khai báo trực tiếp cách liệt kê phần tử đặt cặp ngoặc vuông ([]), ngăn cách phẩy [1, 2, 3, 4, 5] ['a', 'b', 'c', 'd'] [[1, 2], [3, 4]] [1, 'one', [2, 'two']] [] # # # # # list list list list list số nguyên chuỗi list hỗ hợp rỗng Kiểu chuỗi (str) python xem list đặc biệt, bên gồm toàn str độ dài TRƯƠNG XUÂN NAM 18 Khởi tạo list Tạo list constructor l1 = list([1, 2, 3, 4]) # list số nguyên l2 = list('abc') # list chuỗi l3 = list() # list rỗng Tạo list list comprehension # X # # Y list 1000 số nguyên từ đến 999 = [n for n in range(1000)] list gồm 10 list cặp [x, x2] với x chạy từ đến = [[x, x*x] for x in range(10)] TRƯƠNG XUÂN NAM 19 Phép toán, mục cắt Giữa list str có tương đồng định List hỗ trợ phép toán: ghép nối (+), nhân (*) kiểm tra nội dung (in) List sử dụng hệ thống mục phép cắt phần tương tự str Điểm khác biệt nội dung list thay đổi l1 = list([1, 2, 3, 4]) l1[-1] = list('abc') print(l1) # [1, 2, 3, ['a', 'b', 'c']] TRƯƠNG XUÂN NAM 20 Các phương thức list Một số phương thức thường hay sử dụng count(sub, [start, [end]]): đếm số lần xuất sub index(sub[, start[, end]]): tìm vị trí xuất sub, trả ValueError khơng tìm thấy clear(): xóa trắng list append(x): thêm x vào cuối list extend(x): thêm phần tử x vào cuối list insert (p, x): chèn x vào vị trí p list pop(p): bỏ phần tử thứ p khỏi list (trả giá trị phần tử đó), khơng định p lấy phần tử cuối TRƯƠNG XUÂN NAM 21 Các phương thức list Một số phương thức thường hay sử dụng copy(): tạo list (tương tự list[:]) remove(x): bỏ phần tử list có giá trị x, báo lỗi ValueError khơng tìm thấy reverse(): đảo ngược phần tử list sort(key=None, reverse=False): mặc định xếp phần tử từ bé đến lớn list cách so sánh trực tiếp giá trị x = "Trương Xuân Nam".split() x.sort(key=str.lower) print(x) TRƯƠNG XUÂN NAM 22 Phần Tuple (hàng) TRƯƠNG XUÂN NAM 23 Tuple dạng readonly list Tuple = dãy đối tượng (list), bị thay đổi giá trị q trình tính tốn Như str giống tuple nhiều list Khai báo trực tiếp cách liệt kê phần tử đặt cặp ngoặc tròn (), ngăn cách phẩy (1, 2, 3, 4, 5) ('a', 'b', 'c', 'd') (1, 'one', [2, 'two']) (1,) () # # # # # TRƯƠNG XUÂN NAM tuple tuple tuple tuple tuple số nguyên chuỗi hỗ hợp phần tử rỗng 24 Tuple list nhiều điểm giống Tuple tạo constructor tuple comprehension Tuple hỗ trợ phép toán: +, *, in Tuple cho phép sử dụng mục cắt Các phương thức thường dùng tuple count(v): đếm số lần xuất v tuple index(sub[, start[, end]]): tương tự str list Tuple khác list điểm nào? Chiếm nhớ Nhanh TRƯƠNG XUÂN NAM 25 Phần Range (miền) TRƯƠNG XUÂN NAM 26 Range tuple đặc biệt? Chúng ta làm quen với range dùng vòng for range(stop): tạo miền từ đến stop-1 range(start, stop[, step]): tạo miền từ start đến stop-1, với bước nhảy step • Nếu khơng định step = • Nếu step số âm tạo miền đếm giảm dần (start > stop) Vậy range khác tuple đặc biệt Range chứa số nguyên Range nhanh nhiều Range chiếm nhớ Range hỗ trợ mục cắt (nhưng đặc biệt) TRƯƠNG XUÂN NAM 27 Phần Bài tập TRƯƠNG XUÂN NAM 28 Bài tập Người dùng nhập từ bàn phím liên tiếp từ tiếng Anh viết tách dấu cách Hãy nhập chuỗi đầu vào tách thành từ sau in hình từ theo thứ tự từ điển Người dùng nhập từ bàn phím chuỗi số nhị phân viết liên tiếp nối dấu phẩy Hãy nhập chuỗi đầu vào sau in giá trị nhập Nhập số n, in hình số ngun dương nhỏ n có tổng ước số lớn TRƯƠNG XN NAM 29 Bài tập Hãy nhập số nguyên n, tạo list gồm số fibonacci nhỏ n in Dãy fibonacci dãy số nguyên định nghĩa cách đệ quy sau: f(0)=0, f(1) = 1, f(1