TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP.HCMKHOA TÀI CHÍNH – NGÂN HÀNG
Trang 3Mục Lục
Chương I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH .5
1 Khái niệm về lập trình và ngôn ngữ lập trình 5
3.7 Ví dụ chương trình đơn giản 7
4 Một số kiểu dữ liệu chuẩn 8
4.1 Kiểu nguyên 8
4.2 Kiểu thực 8
4.3 Kiểu ký tự 8
4.4 Kiểu logic 9
5 Khai báo biến 9
6 Phép toán, biểu thức, câu lệnh gán 10
8 Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình 14
NHỮNG ĐIỂM MẠNH KHI SỬ DỤNG PYTHON 15
Trang 41 Lặp với số lần biết trước 18
2 Lặp với số lần không biết trước 19
3 Điều khiển vòng lặp, break và continue 19
Chương IV.Kiểu mảng: 20
1 Kiểu mảng một chiều: 20
2 Kiểu mảng hai chiều: 22
3 Các thao tác xử lý List: 22
Chương V.Khái niệm chương trình con 27
Chương VI Kiểu chuỗi 32
Trang 5MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
1 Khái niệm về lập trình và ngôn ngữ lập trình1.1 Khái niệm về lập trình
Lập trình là việc sử dụng các ngôn ngữ lập trình, các đoạn mã lệnh và các tiện ích có sẵn để xây dựng các chương trình phần mềm, trò chơi ứng dụng của hệ thống xử lý các trang web… giúp người dùng có thể thực hiện các mệnh lệnh của máy tính cũng như tương tác qua lại với nhau thông qua các thiết bị điện tử.
1.2 Khái niệm về ngôn ngữ lập trình
Ngôn ngữ lập trình là một dạng ngôn ngữ máy tính, được dùng để viết ra phần mềm, tập lệnh hoặc các hướng dẫn cho máy tính làm theo.
Python là một ngôn ngữ lập trình phiên dịch (Interpreter Language), tức là không cần build thành file thực thi mà chạy trực tiếp.
Là tập hợp các ký tự được dùng để viết chương trình.
Không được dùng bất kỳ ký tự nào ngoài kí tự quy định trong bảng chữ cái Trong Python, bảng chữ cái được bao gồm các ký tự sau:
- Các chữ cái trong bảng mã Unicode - Các chữ số: 0 1 2 3 4 5 6 7 8 9 - Các ký tự đặc biệt: + - * / =
2.1.2.Cú pháp
Là bộ quy tắc để viết chương trình Dựa vào chúng, người lập trình và chương trình dịch biết được tổ hợp nào của các ký tự trong bảng chữ cái là hợp lệ và tổ hợp nào không hợp lệ Nhờ đó có thể mô tả chính xác thuật toán để máy thực hiện.
Chương trình không còn lỗi cú pháp thì mới có thể dịch sang ngôn ngữ máy.
2.1.3.Ngữ nghĩa
Là xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp ký tự dựa vào ngữ cảnh của nó.
Ví dụ: cùng một ký tự là dấu cộng, nhưng đối với số nguyên thì nó sẽ ra kết quả số nguyên Đối với số thực thì sẽ ra kết quả là số thực Hai kết quả khác nhau.
Trang 62.2 Một số khái niệm2.2.1 Tên
Trong Python, Tên các đối tượng được đặt bằng các ký tự thường (a- z), ký tự in hoa (A-Z), chữ số (0-9) và dấu gạch dưới _
Tên đối tượng không bắt đầu bằng chữ số, không dùng các ký tự đặc biệt như !, @, #, … và được phân biệt chữ hoa, chữ thường.
Tên trong Python không giới hạn độ dài Tuy nhiên nên đặt tên có tính gợi nhớ về đối tượng Ví dụ đặt tên biến để lưu giá trị đếm số lần thực thi thì nên đặt là “dem” hay “count”,…
2.2.2 Tên dành riêng
Tên dành riêng được hiểu là Từ khóa (keyword) trong Python.
Keyword được định nghĩa sẵn để sử dụng Chúng ta không thể dùng keyword để đặt tên biến, tên hàm hoặc bất kỳ đối tượng nào trong chương trình.
Tất cả các keyword trong Python đều được viết thường, trừ 03 keyword: True, False, None.
Ví dụ một số keyword: True, False, await, else, import, pass, break, except, in, and, or, ….
Thực tế thì không cần nhớ keyword vì khi gõ trình soạn thảo sẽ có gợi ý các keyword (ta tránh đặt tên đối tượng trùng với các keyword được gợi ý) và nếu đặt trùng tên keyword thì khi chạy chương trình sẽ báo lỗi.
Hằng là một loại biến đặc biệt, giá trị của hằng là không đổi trong suốt chương trình sau lần gán giá trị đầu tiên Tên hằng được viết hoàn toàn bằng CHỮ HOA và dấu gạch dưới (nếu cần).
2.2.4.2 Biến
Biến là đại lượng (đối tượng) được đặt tên, dùng để lưu trữ giá trị và giá trị có thể dược thay đổi trong quá trình thực hiện chương trình.
Biến trong Python không cần khai báo trước, không nhất thiết phải khai báo kiểu dữ liệu Khi đặt tên và gán giá trị Python tự động nhận dạng và tùy biến theo kiểu dữ liệu được gán.
Trang 72.2.5 Chú thích
Chú thích trong Python có thể sử dụng các cách sau:
- # dùng dấu thăng đầu dòng khi chú thích trên 1 dòng
- ‘‘‘ dùng 3 dấu nháy đơn hoặc nháy kép khi chú thích trên nhiều dòng ’’’
CHƯƠNG TRÌNH ĐƠN GIẢN 3 Cấu trúc chương trình
3.1 Cấu trúc chung
Trong Python không cần có <phần khai báo>
Ta có thể thay phần khai báo bằng một ghi chú về chương trình.
Python không cần thiết phải khai báo biến, hằng trong phần khai báo mà khi nào dùng đến đối tượng nào thì khai báo đối tượng ấy.
Ví dụ:
Khai báo thư viện (module) các hàm toán học:
Import math # khai báo dùng thư viện các hàm toán học Khai báo biến:
a = 0
Khai báo hằng: TONG = 50
3.2.2.Phần thân chương trình
Phần thân chương trình Python là các câu lệnh thực thi.
3.3 Ví dụ chương trình đơn giản
Trang 8Xin lưu ý, code trong Python mặc định xâu ký tự ở chuẩn unicode nên có thể gõ tiếng Việt có dấu thoải mái.
4 Một số kiểu dữ liệu chuẩn
Python không có kiểu char như Pascal Một ký tự (kiểu char của pascal) được coi như một xâu có độ dài bằng 1 trong Python Kiểu xâu (str) hay còn gọi là kiểu chuỗi không giới hạn độ dài.
Tuy nhiên, Python cung cấp các hàm chr() và ord() để lấy vị trí của ký tự trong bảng mã Unicode và ngược lại Chương trình dưới đây cho thấy mã của chữ Â trong bảng
Trang 94.3 Kiểu logic
Kiểu logic (bool) trong Python có giá trị True hoặc False
Ngoài ra, Python còn có các kiểu dữ liệu: complex; list, tuple, range; dict; set,
frozenset; bytes, bytearray, memoryview Trong phần sau của chương trình chúng ta sẽ tìm hiểu thêm.
5 Khai báo biến
Trong Python một biến không cần khai báo kiểu dữ liệu Khi ta gán giá trị thì tự động Python sẽ tùy biến kiểu dữ liệu của biến cho phù hợp với dữ liệu được gán vào Như vậy một biến có thể có nhiều kiểu dữ liệu tùy thuộc vào giá trị mà ta gán.
Ví dụ trong cùng một chương trình khai báo như sau biến a sẽ tự động chuyển đổi kiểu để lưu giá trị được gán:
a = 'Học Python' # biến a có kiểu xâu
a = 5 # biến a đổi sang kiểu nguyên a = 5.5 # biến a đổi sang kiểu thực a = True # biến a đổi sang kiểu logic
Ta có thể ép kiểu cho biến bằng cách khai báo kiểu cho giá trị gán cho biến Ví dụ:
a = str(5) # biến a có kiểu xâu b = int(5.5) # biến b có kiểu nguyên c = float(5) # biến c có kiểu thực
Trang 10Nếu thực hiện lệnh print(a+b) thì Python sẽ báo lỗi vì không thể cộng một xâu với một số
% Lấy phần dư của phép chia (mod) x % y // Lấy phần nguyên của phép chia
Trang 11Toán tửÝ nghĩaVí dụ
and Và: True khi cả hai đều True x and y or Hoặc: True nếu một trong hai là
x or y
1.2 Biểu thức số học
Biểu thức số học là một biến kiểu số hoặc một hằng số hoặc các biến kiểu số và các hằng số được liên kết với nhau bởi phép toán số học, các dấu ngoặc tròn (và) tạo thành một biểu thức số học.
Quy tắc viết biểu thức số học trong lập trình:
- Chỉ dùng cặp ngoặc tròn () để xác định trình tự thực hiện - Viết lần lượt từ trái qua phải.
- Không được bỏ qua dấu nhân trong tích Ví dụ:
Biểu thức trong toán học Biểu thức trong Python
1.3 Hàm số học chuẩn
Trong Python, các hàm số học chuẩn này được định nghĩa trong module math Để sử dụng các hàm nay trong Python, chúng ta cần thực hiện hàm import math (trừ các hàm: abs(), x**2.
Trang 12Hàm lũy thừa của cơ số e: e^x exp(x)
Ví dụ Trước khi dùng hàm sqrt() ta phải thực thiện import module math như sau:
Biểu thức quan hệ là hai biểu thức cùng kiểu liên kết với nhau bởi phép toán quan hệ Biểu thức 1, biểu thức 2 cùng là xâu, hoặc cùng là biểu thức số học.
Thứ tự thực hiện:
Bước 1: Tính giá trị các biểu thức Bước 2: Thực hiện phép toán quan hệ.
Biểu thức quan hệ Giá trị tham chiếu Thực hiện phép toán quan hệ
Kết quả của biểu thức quan hệ kiểu logic.
1.5 Biểu thức logic
Biểu thức logic là các biểu thức logic đơn giản, các biểu thức quan hệ liên kết với nhau bởi phép toán logic.
Biểu thức logic đơn giản là biến logic hoặc hằng logic Các biểu thức quan hệ phải được đặt trong cặp dấu () Thứ tự thực hiện:
Bước 1: Tính giá trị các biểu thức Bước 2: Thực hiện phép toán logic.
Trang 13Câu lệnh gán trong Python dùng dấu = để gán giá trị bên phải cho biến bên trái Các lệnh gán trong Python cụ thể như sau:
Trong Python để nhập liệu từ bàn phím ta dùng hàm input() Giá trị nhập vào của hàm input() mặc định là kiểu xâu, do đó ta cần chuyển kiểu nếu như muốn lưu trữ giá trị nhập vào không phải kiểu chuỗi.
Ví dụ:
Trang 14a = input() # nhập giá trị cho a (mặc định kiểu xâu) b = input('Nhập b: ') # nhập c (kiểu xâu)
c = int(input('Nhap c: ')) # nhập giá trị cho c có kiểu số nguyên.
Nhập giá trị và nhấn Enter lần lượt cho từng biến.
1.2 Đưa dữ liệu ra màn hình
Python sử dụng hàm print() để hiển thị dữ diệu ra màn hình Ta cũng có thể in thông báo nhập dữ liệu ra màn hình ngay trong lệnh input().
n = int(input("Lớp bạn có bao nhiêu người? ")) print("Vậy bạn có ", n-1, " người bạn trong lớp.") print("Gõ Enter để kết thúc chương trình.") input()
2 Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình
Với Python, ta có thể dùng các phần mềm IDE hoặc tex editor để soạn thảo và hiệu chỉnh chương trình.
Trang 15Để code các chương trình đơn giản, không cần debug thì ta có thể dùng Notepad++ (lưu ý chọn ngôn ngữ Python từ menu Language)
Để được hỗ trợ debug chương trình và các chức năng khác ta dùng các IDE để soạn thảo Có nhiều IDE hỗ trợ lập trình Python như PyCham, Spyder, Thonny,… Trong chương trình tin học phổ thông chúng ta nên dùng Thonny làm công cụ soạn thảo lập trình Python vì một số yếu tố sau:
- Thonny có giao diện đơn giản, cấu hình nhẹ (trên cùng một máy khởi động nhanh hơn nhiều so với Pycham hay Spyder).
- Hỗ trợ debug trực quan giúp ta dễ theo dõi và hình dung quá trình thực thi chương trình.
- Sử dụng thư viện / module chuẩn của Python phát hành (không bổ sung hay import sẵn module).
Trang 16Để thực thi chương trình (Run): Nhấn F5 Để Debug nhấn Ctrl+F5
NHỮNG ĐIỂM MẠNH KHI SỬ DỤNG PYTHON
1 DỄ ĐỌC VÀ DỄ HỌC: Python là một ngôn ngữ dễ đọc và dễ học Nó không
có các cú pháp phức tạp như các ngôn ngữ cấp cao khác như C hay C++ mà các cú pháp của Python khá đơn giản và rất giống với ngôn ngữ tự nhiên Chính vì thế, Python cho phép người dùng suy nghĩ rõ ràng hơn và tập trung vào việc xây dựng logic.
2 ÍT CHI PHÍ: Do những tính năng đơn giản của Python, nó giúp chúng ta bảo
trì ứng dụng dễ dàng hơn Từ đó làm giảm các chi phí liên quan.
3 KHẢ NĂNG ỨNG DỤNG RỘNG RÃI: Python được sử dụng rộng rãi trong
nhiều lĩnh vực như phân tích dữ diệu, máy móc, trí tuệ nhân tạo, phát triển web,…
4 KHẢ NĂNG TÍCH HỢP VỚI CÁC NGÔN NGỮ KHÁC: Python có các thư
viện như Cython và Jython, cho phép tích hợp với các ngôn ngữ khác như C, C++ để phát triển đa nền tảng.
5 CỘNG ĐỒNG LỚN VÀ HỖ TRỢ MẠNH MẼ: Python có một cộng đồng lập
trình viên đông đảo, cung cấp nhiều tài liệu.
Trang 17NHỮNG HẠN CHẾ KHI SỬ DỤNG PYTHON
1 TỐC ĐỘ THỰC THI CHẬM: Python thường chậm hơn nhiều so với các
ngôn ngữ lập trình khác, đặc biệt là trong các ứng dụng yêu cấu tốc độ xử lý cao.
2 QUẢN LÝ BỘ NHỚ TỰ ĐỘNG: Mặc dù có ưu điểm làm giảm áp lực cho lập
trình viên, nhưng có thể gây ra vấn đề hiệu suất và đôi khi làm giảm chất lượng mã nguồn.
3 KHẢ NĂNG HẠN CHẾ TRONG PHÁT TRIỂN DI ĐỘNG: Trong lĩnh vực
phát triển ứng dụng di động, Python không phải là lựa chọn phổ biến nhất do tốc độ thực thi không cao và kích thước của các ứng dụng Python lớn hơn so với các ngôn ngữ khác.
4 TIÊU THỤ BỘ NHỚ LỚN: Cấu trúc của Python đòi hỏi nhiều không gian bộ
nhớ hơn Chính vì thế nó không thích hợp để sử dụng cho sự phát triển trong điều kiện bộ nhớ hạn chế.
5 KHÓ KIỂM TRA: Vì Python là ngôn ngữ dựa trên trình thông dịch, nên rất
khó để chạy các bài kiểm tra trên mã được viết bằng Python Tất cả các lỗi chỉ xuất hiện trong thời gian chạy, điều này khiến việc kiểm tra các đoạn mã được viết bằng Python rất khó khăn
CHƯƠNG III CẤU TRÚC RẼ NHÁNH VÀ LẶPI / CẤU TRÚC RẼ NHÁNH
Trang 19Ví dụ:
II CẤU TRÚC LẶP
1.Lặp với số lần biết trước
Cấu trúc for cho phép lặp lại việc thực hiện các khối lệnh theo một số lần xác định
sẵn từ đầu Ví dụ:
Hàm range() trả về một biến chưa một dãy các giá trị nằm trong một khoảng xác định theo quy luật Hàm range có 3 dạng:
print(“Xếp loại: Trung Bình”)
For <biến chạy> in range(start, stop, step):print()
For i in range(5):print(i)
Trang 20A/ range(stop): nhận 1 tham số là giá trị cuối của dãy và trả về dãy số [ 0, stop -1] Ví dụ: range(5) sẽ trả lại dãy số 0, 1, 2, 3, 4 Bước nhảy giữa các giá trị là 1
B/ range(start, stop): nhận 2 tham số là giá trị đầu và cuối của dãy, trả về dãy số [ start, stop -1].
Ví dụ: range(1, 5) sẽ trả lại dãy số 1, 2, 3, 4 Bước nhảy giữa các giá trị là 1
C/ range(start, stop, step): tương tự hai trường hợp trên nhưng bước nhảy được xác định bởi biến step
Ví dụ: range(1, 10, 2) sẽ trả lại dãy số 1, 3, 5, 7, 9 Bước nhảy giữa các giá trị kế tiếp là 2
1.1 Sử dụng vòng lặp for với các kiểu danh sách khác
Ví dụ:
2 Lặp với số lần không biết trước
Vòng lặp while trong Python được sử dụng để lặp một khối mã khi biểu thức kiểm
tra ( điều kiện) còn đúng Chúng ta thường sử dụng vòng lặp này khi chúng ta không biết trước số lần lặp lại.
Lưu ý: Để thoát khỏi một vòng lặp vô hạn trong Python ta sử dụng tổ hợp phím Ctrl + C Ví dụ: Yêu cầu sinh viên nhập n>0 Nếu sai yêu cầu sinh viên nhập lại.
20Colors = [“red”, “green”, “blue”]
# Vòng lặp for duyệt các phần tử của list For color in colors:
while <điều kiện >:
<câu hoặc khối lệnh>
n = -1
Trang 213 Điều khiển vòng lặp, break và continue
Câu lệnh “break” được sử dụng để thoát khỏi vòng lặp Câu lệnh “continue” được sử dụng để bỏ qua phần còn lại của vong lặp Cả hai loại vòng lặp for và while đều có thể sử dụng “break” và “Continue”.
Ví dụ:
IV.Kiểu mảng:
Hầu hết cái ngôn ngữ lập trình khác đều có cấu trúc dữ liệu cơ bản là “Mảng” Mảng là tập hợp các phần tử của một kiểu dữ liệu duy nhất, ví dụ mảng số nguyên, mảng xâu,… Tuy nhiên, ngôn ngữ Python không có cấu trúc dữ liệu là mảng mà sử dụng kiểu “Danh sách” (list) để thay thế cho mảng Không giống như các mảng, mỗi list có khả năng chứa các phần tử thuộc bất kỳ kiểu dữ liệu nào và thực hiện tất cả các chức năng đặc trưng của một mảng Các số nguyên, số thập phân và chuỗi đều có thể được lưu trữ trong cùng một list, do đó thao tác trên list có khả năng linh hoạt cao.
Ví dụ list có dạng:
Các phần tử trong list có chỉ số bắt đầu từ 0 Ta có thể gọi 1 hay nhiều phần tử trong list bằng các đối số trong ngoặc [].
1 Kiểu mảng một chiều:
Cấu trúc dữ liệu mảng một chiều trong Python có thể biểu diễn bằng kiểu dữ liệu danh sách (list) với chức năng truy cập dễ dàng từng phần tử theo chỉ số, truy cập theo vùng
chỉ số Toán tử in và lệnh for in sẽ hỗ trợ duyệt từng phần tử của mảng.
for i in range(10):if i == 5: breakprint(i)
Trang 221.1 Khai báo:
Biến trong Python không cần khai báo mà sẽ tự thay đổi kiểu cho phù hợp với giá trị được gán vào.
Một số lưu ý:
- Khởi tạo một biến kiểu list chỉ bằng cách gán vào biến một list rỗng [] - Chỉ số các phần tử trong list bắt đầu từ 0 và chiều ngược lại bắt đầu từ -1 - Có thể ghép các list với nhau bằng toán tử cộng +.
- Cần lưu ý phân biện chỉ số phần tử và giá trị phần tử của list 1.2 Một số ví dụ:
Trong Python có thể dùng hàm sort() để sắp xếp list mà không cần viết chương trình sắp xếp như trên Viết lại chương trình trên như sau:
Python cung cấp các hàm in, index để xử lý tìm kiếm trong list Ta có thể áp dụng cho ví dụ trên như sau:
Trang 232 Kiểu mảng hai chiều:
Python hỗ trợ mô hình dữ liệu danh sách trong danh sách (Nested List)tức là mỗi phần tử của danh sách là một đối tượng dạng danh sách khác Vì vậy ta xử lý dữ liệu mảng 2 chiều bằng list như đã xử lý với mảng 1 chiều.
Lưu ý: Để thay thế mảng 2 chiều thì các phần tử của list con phải có cùng số phần tử.
Trang 24 Cú pháp:
[<giá trị thứ nhất>,<giá trị thứ hai>,…,<giá trị thứ n-1>,<giá trị thứ n>]
Tạo List với List Comprehension:
List comprehension cũng cấp một cú pháp ngắn gọn hơn để tạo một List mới dựa
trên các giá trị của một List khác.
Kết quả:
Cú pháp:
3.2 Sắp xếp ( sort) List trong Python:
Đối tượng List có hàm sort() để sắp xếp các phần tử string và number trong List theo thứ tự giảm dần, tăng dần Mặc định, các phần tử được sắp xếp theo thứ tự tăng dần Nếu truyền đối số reverse = True cho hàm sort() thì sẽ sắp xếp theo thứ tự giảm dần
Ví dụ:
Trang 25Kết quả:
3.3 Sao chép (copy) List trong Python:
Chúng ta có thể sử dụng hàm copy() hoặc hàm list() để sao chép một List
Ví dụ:
Trang 26Kết quả:
Lưu ý: Chúng ta không thể dùng toán tử gán để sao chép 2 List như my_list_1 = my_list Bởi vì my_list_1 chỉ tham chiếu đến List mà my_list tham chiếu đến Lúc này, my_list_1 hoặc my_list thay đổi thì cũng sẽ dấn đến list kia thay đổi theo.
3.4 Nối (join) List trong Python:
Cách đơn giản nhất để nối (join) 2 hoặc nhiều List là sử dụng toán tử +.Ví dụ:
Kết quả:
Chúng ta có thể sử dụng hàm append() để nối 2 List với vòng lặp for