Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 166 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
166
Dung lượng
4,85 MB
Nội dung
TRẦN NHẬT QUANG PHẠM VĂN KHOA GIÁO TRÌNH LẬP TRÌNH PYTHON CĂN BẢN NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TS TRẦN NHẬT QUANG, TS PHẠM VĂN KHOA GIÁO TRÌNH LẬP TRÌNH PYTHON CĂN BẢN NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH – 2023 LỜI NÓI ĐẦU Python ngơn ngữ lập trình phổ biến giới1 Ưu điểm bật Python dễ học, dễ viết Khơng thế, Python cịn có cộng đồng người dùng lớn hệ thống thư viện mã nguồn mở đồ sộ giúp bạn hoàn thành dự án nhanh chóng hiệu Cho dù dự án phân tích liệu, học máy, xử lý ảnh, game, điều khiển thiết bị, đơn giản tự động hóa tác vụ máy tính bạn, gần bạn tìm thấy thư viện Python hỗ trợ Quyển giáo trình biên soạn với mong muốn hỗ trợ hiệu cho bạn sinh viên học lập trình Python Tiêu chí thứ nhóm biên soạn giúp người học lập trình lần đầu dễ dàng nắm bắt khái niệm kỹ thuật lập trình với Python Tiêu chí thứ hai cố gắng trình bày nội dung cách súc tích, đầy đủ, để bạn học qua lập trình nhanh chóng làm quen sử dụng Python học xong giáo trình Rất mong giáo trình hữu ích với bạn! Nhóm biên soạn mong nhận góp ý độc giả để cải thiện giáo trình ngày tốt Xin cảm ơn bạn! Theo xếp hạng TIOBE Index PYPL Index cập nhật vào tháng năm 2022 MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC DANH MỤC HÌNH ẢNH Chương GIỚI THIỆU VÀ CÀI ĐẶT PYTHON 1.1 Đôi nét ngơn ngữ lập trình Python 1.2 Lịch sử phát triển Python 10 1.3 Cài đặt Python 11 1.4 Một số lời khuyên hữu ích cho người 16 Chương PHÉP TOÁN CƠ BẢN, BIẾN VÀ NHẬP XUẤT TRONG PYTHON 18 2.1 Sử dụng VS Code máy tính cầm tay 18 2.2 Các phép toán 19 2.3 Biến 21 2.4 Nhập xuất 23 2.5 Lệnh if 26 Bài tập có lời giải 32 Bài tập thực hành 33 Chương VÒNG LẶP VÀ CẤU TRÚC DỮ LIỆU MẢNG 35 3.1 Vòng lặp while 35 3.2 Cấu trúc liệu mảng 41 3.3 Vòng lặp for 46 3.4 Break, continue pass 49 Bài tập có lời giải 50 Bài tập thực hành 51 Chương NUMPY 54 4.1 Giới thiệu Numpy 54 4.2 Cài đặt thư viện numpy 54 4.3 Numpy arrays 55 Bài tập thực hành 58 Chương SETS VÀ DICTIONARIES 60 5.1 Sets 60 5.2 Dictionaries 62 Bài tập có lời giải 67 Bài tập thực hành 68 Chương STRINGS 69 6.1 Khái niệm khởi tạo strings 69 6.2 Hàm xử lý strings 71 Bài tập thực hành 73 Chương HÀM 74 7.1 Khái niệm cú pháp 74 7.2 Một số ví dụ .74 7.3 Biến đoạn code thành hàm 81 Bài tập có lời giải 83 Bài tập thực hành 84 Chương LỖI VÀ SỬA LỖI 86 8.1 Các dạng lỗi lập trình 86 8.2 Xử lý lỗi runtime 87 8.3 Xử lý lỗi logic 90 8.4 Các lưu ý viết code để hạn chế lỗi 95 Bài tập thực hành 97 Chương VẼ VỚI MATPLOTLIB 99 9.1 Cách thức vẽ hình kỹ thuật số 99 9.2 Vẽ với thư viện matplotlib 100 9.3 Vẽ đồ thị tọa độ cực 106 9.4 Tùy chỉnh hình vẽ 108 9.5 Vẽ nhiều phân vùng với subplotlib 116 Bài tập thực hành 120 PHỤ LỤC 122 Mã nguồn tập có lời giải chương 122 Mã nguồn tập có lời giải chương 127 Mã nguồn tập có lời giải chương 131 Mã nguồn tập có lời giải chương 135 Keywords Python 142 Cài đặt thuật toán xếp Python 145 Cài đặt thuật tốn tìm kiếm mảng Python 151 Cài đặt thuật tốn tìm kiếm chuỗi Python 158 INDEX 161 TÀI LIỆU THAM KHẢO 163 DANH MỤC HÌNH ẢNH Hình 1-1 Logo Python Nguồn: Python Software Foundation Hình 1-2 Cài đặt Python cách tick vào ô Add Python to PATH cửa sổ cài đặt 12 Hình 1-3 Giao diện Visual Studio Code 12 Hình 1-4 Giao diện trang OnlineGDB 16 Hình 1-5 Ứng dụng Pydroid Google Play 16 Hình 2-1 Lưu đồ khối lệnh if 28 Hình 3-1 Lưu đồ hoạt động vòng lặp while 35 Hình 3-2 Lưu đồ hoạt động vòng lặp for 47 Chương GIỚI THIỆU VÀ CÀI ĐẶT PYTHON 1.1 Đơi nét ngơn ngữ lập trình Python Python ngơn ngữ lập trình cấp cao đa dụng (generalpurpose) phát triển Guido van Rossum Phiên phát hành vào năm 1991 Tên đặt theo chương trình hài Monty Python1 Anh cách phản ánh triết lý thiết kế Python: ngôn ngữ lập trình thú vị sử dụng Hình 1-1 Logo Python Nguồn: Python Software Foundation Triết lý ngôn ngữ lập trình Python mơ tả cách ngơn tài liệu The Zen of Python (PEP 20) như: ▪ ▪ ▪ ▪ Simple is better than complex (tạm dịch: Đơn giản tốt phức tạp) Complex is better than complicated (tạm dịch: Phức hợp tốt phức tạp) Explicit is better than implicit (tạm dịch: Tường minh tốt ngầm định) Readability counts (tạm dịch: Lưu tâm đến dễ đọc hiểu) Với triết lý đó, Python hướng tới đơn giản, ngắn gọn mã lệnh Bạn cảm nhận điều bắt đầu lập trình với Python so sánh với ngơn ngữ C/C++, Java Đến nay, Python phát triển qua nhiều phiên Hai nhóm phiên sử dụng Python 2.x Python 3.x Tuy nhiên, Theo General Python FAQ, docs.python.org Cài đặt thuật tốn tìm kiếm mảng Python Nguồn: https://www.geeksforgeeks.org/searching-algorithms/#algo # THUẬT TỐN TÌM KIẾM TUYẾN TÍNH (LINEAR SEARCH) # If x is present then return its location, otherwise return -1 def search(arr, n, x): for i in range(0, n): if (arr[i] == x): return i return -1 # Driver Code arr = [2, 3, 4, 10, 40] x = 10 n = len(arr) # Function call result = search(arr, n, x) if(result == -1): print("Element is not present in array") else: print("Element is present at index", result) # THUẬT TỐN TÌM KIẾM NHỊ PHÂN (BINARY SEARCH) # Returns index of x in arr if present, else -1 def binarySearch(arr, l, r, x): # Check base case if r >= l: 151 mid = l + (r - l) // # If element is present at the middle itself if arr[mid] == x: return mid # If element is smaller than mid, then it can only be present in left subarray elif arr[mid] > x: return binarySearch(arr, l, mid-1, x) # Else the element can only be present in right subarray else: return binarySearch(arr, mid+1, r, x) else: # Element is not present in the array return -1 # Driver Code arr = [2, 3, 4, 10, 40] x = 10 # Function call result = binarySearch(arr, 0, len(arr)-1, x) if result != -1: print("Element is present at index % d" % result) else: print("Element is not present in array") # THUẬT TOÁN TÌM KIẾM NHẢY (JUMP SEARCH) # This code is contributed by "Sharad_Bhardwaj" import math def jumpSearch( arr , x , n ): # Finding block size to be jumped step = math.sqrt(n) 152 # Finding the block where element is present (if it is present) prev = while arr[int(min(step, n)-1)] < x: prev = step step += math.sqrt(n) if prev >= n: return -1 # Doing a linear search for x in block beginning with prev while arr[int(prev)] < x: prev += # If we reached next block or end element is not present of array, if prev == min(step, n): return -1 # If element is found if arr[int(prev)] == x: return prev return -1 # Driver code to test function arr = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610 ] x = 55 n = len(arr) 153 # Find the index of 'x' using Jump Search index = jumpSearch(arr, x, n) # Print the index where 'x' is located print("Number" , x, "is at index" ,"%.0f"%index) # THUẬT TỐN TÌM KIẾM NỘI SUY (INTERPOLATION SEARCH) # This code is contributed by Hardik Jain # If x is present in arr[0 n-1], then returns index of it, else returns -1 def interpolationSearch(arr, lo, hi, x): # Since array is sorted, an element present in array must be in range defined by corner if (lo = arr[lo] and x x: return interpolationSearch(arr, lo, pos - 1, x) return -1 # Driver code # Array of items in which search will be conducted arr = [10, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 33, 35, 42, 47] n = len(arr) # Element to be searched x = 18 index = interpolationSearch(arr, 0, n - 1, x) if index != -1: print("Element found at index", index) else: print("Element not found") # THUẬT TỐN TÌM KIẾM HÀM MŨ (EXPONENTIAL SEARCH): # This code is contributed by Harshit Agrawal # A recursive binary search function returns location of x in given array arr[l r] is present, otherwise -1 def binarySearch( arr, l, r, x): if r >= l: mid = l + ( r-l ) // 155 # If the element is present at the middle itself if arr[mid] == x: return mid # If the element is smaller than mid, it can only be present in the left subarray then if arr[mid] > x: return binarySearch(arr, l, mid - 1, x) # Else he element can only be present in the right return binarySearch(arr, mid + 1, r, x) # We reach here if the element is not present return -1 # Returns the position of first occurrence of x in array def exponentialSearch(arr, n, x): # IF x is present at first location itself if arr[0] == x: return # Find range for binary search j by repeated doubling i = while i < n and arr[i]