Giáo trình python nâng cao

Python nâng cao cho trẻ

🚀 Python Nâng Cao Cho Trẻ

Khám phá thế giới lập trình đầy thú vị!

Version 3.x

1️⃣ Chương 1: Chương trình con và thư viện

Khởi động nào!

Câu 1: Chương trình con trong Python được gọi là gì?

A. Hàm (function)
B. Phương thức (method)
C. Thủ tục (procedure)
D. Module

Câu 2: Từ khóa nào dùng để định nghĩa hàm?

A. define
B. def
C. function
D. func

Câu 3: Lệnh nào để nhập thư viện math?

A. include math
B. import math
C. require math
D. using math

Câu 4: Hàm nào tính căn bậc 2 trong math?

A. sqrt()
B. root()
C. square()
D. pow()

Câu 5: Giá trị trả về của hàm không có return là gì?

A. 0
B. None
C. False
D. ""

Thực hành

  1. Viết hàm tính tổng 2 số
  2. Viết hàm kiểm tra số chẵn
  3. Viết hàm tính giai thừa
  4. Viết hàm tính diện tích hình tròn sử dụng math.pi
  5. Viết hàm in bảng cửu chương từ 1 đến 10

Hàm - Chương trình con

Hàm giúp chia chương trình thành các phần nhỏ, dễ quản lý và tái sử dụng

def tên_hàm(tham_số): # Nội dung hàm return giá_trị
# Ví dụ hàm tính tổng def tinh_tong(a, b): return a + b # Gọi hàm ket_qua = tinh_tong(5, 3) print(ket_qua) # 8

Thư viện trong Python

Python có nhiều thư viện hữu ích như math, random, datetime...

# Cú pháp khai báo thư viện import tên_thư_viện # Cú pháp gọi hàm trong thư viện tên_thư_viện.tên_hàm(tham_số) # Một số thư viện thường dùng math (Toán học) sqrt(x): Căn bậc hai. pow(x, y): X lũy thừa y. gcd(x, y): Ước chung lớn nhất của x và y. lcm(x, y): Bội chung nhỏ nhất của x và y. sin(x), cos(x): Sin, cos (radian). ceil(x), floor(x): Làm tròn lên/xuống. pi, e: Hằng π, e. random (Ngẫu nhiên) random(): Số thực [0, 1). randint(a, b): Số nguyên [a, b]. choice(seq): Chọn ngẫu nhiên từ danh sách. shuffle(seq): Xáo trộn danh sách. datetime (Ngày giờ) datetime.now(): Ngày giờ hiện tại. date.today(): Ngày hiện tại. strptime(string, format): Chuỗi → datetime. strftime(format): Datetime → chuỗi. timedelta: Cộng/trừ thời gian.
# Ví dụ sử dụng thư viện math import math print(math.sqrt(16)) # 4.0 print(math.pi) # 3.141592653589793 print(math.factorial(5)) # 120
Mẹo hay: Bạn có thể nhập một phần của thư viện bằng cú pháp: from math import sqrt, pi để dùng trực tiếp sqrt() thay vì math.sqrt()

2️⃣ Chương 2: Xâu ký tự - Xử lý xâu ký tự

Khởi động nào!

Câu 1: Xâu "Python"[1:4] trả về gì?

A. "Pyt"
B. "yth"
C. "ytho"
D. "Python"

Câu 2: Hàm nào chuyển xâu thành chữ hoa?

A. upper()
B. capitalize()
C. toUpper()
D. caseUpper()

Câu 3: len("Python") trả về giá trị nào?

A. 5
B. 6
C. 7
D. Lỗi

Câu 4: Hàm nào tách xâu thành list?

A. divide()
B. split()
C. separate()
D. break()

Câu 5: "123".isdigit() trả về gì?

A. True
B. False
C. "123"
D. Lỗi

Thực hành

  1. Viết hàm đảo ngược xâu
  2. Viết hàm đếm số từ trong câu
  3. Viết hàm kiểm tra xâu đối xứng
  4. Viết hàm chuyển tên thành dạng viết hoa chữ cái đầu
  5. Viết hàm dịch chuyển mỗi ký tự tiến lên 1 vị trí trong chuỗi ban đầu (vd: Python -> nPytho)

Xâu ký tự trong Python

Xâu ký tự (string) là chuỗi các ký tự Unicode, bắt đầu và kết thúc bằng nháy đơn hoặc nháy kép

# Các phép toán cơ bản với xâu xau = "Python" print(xau[0]) # 'P' - Truy cập ký tự thứ 0 print(xau[-1]) # 'n' - Truy cập ký tự cuối print(xau[1:4]) # 'yth' - Cắt xâu print(xau[::-1]) # 'nohtyP' - đảo xâu print(xau + "!") # 'Python!' - Nối xâu print(xau * 2) # 'PythonPython' - Nhân xâu

Các phương thức xử lý xâu phổ biến

# Ví dụ các phương thức xâu xau = " Python là ngôn ngữ lập trình " print(xau.strip()) # Bỏ khoảng trắng đầu cuối print(xau.lower()) # Chuyển thành chữ thường print(xau.upper()) # Chuyển thành chữ hoa print(xau.replace("Python", "Java")) # Thay thế print(xau.find("ngữ")) # Tìm vị trí print(xau.isdigit()) # kiểm tra chuỗi có chứa toàn bộ số không? print(xau.split("dấu ngăn cách")) # Tách chuỗi thành danh sách, cách nhau bởi dấu ngăn cách
Lưu ý: Xâu trong Python là bất biến (immutable), nghĩa là không thể thay đổi nội dung sau khi tạo. Các phương thức như upper(), replace() trả về xâu mới chứ không thay đổi xâu gốc.

3️⃣ Chương 3: Danh sách - Xử lý danh sách

Khởi động nào!

Câu 1: Cách nào tạo list rỗng?

A. list = {}
B. list = []
C. list = ()
D. list = ""

Câu 2: list = [1,2,3], list.append(4) thì list là?

A. [1,2,3]
B. [1,2,3,4]
C. [4,1,2,3]
D. Lỗi

Câu 3: list = [5,3,8], list.sort() thì list là?

A. [3,5,8]
B. [5,3,8]
C. [8,5,3]
D. Lỗi

Câu 4: list = [1,2,3,4,5], list[1:4] trả về?

A. [1,2,3]
B. [2,3,4]
C. [1,2,3,4]
D. [2,3,4,5]

Câu 5: Hàm nào nối các phần tử list thành xâu?

A. concat()
B. join()
C. merge()
D. combine()

Thực hành

  1. Viết hàm nhập danh sách từ bàn phím và xuất ra màn hình
  2. Viết hàm tính tổng các phần tử trong list
  3. Viết hàm tìm giá trị lớn nhất trong list
  4. Viết hàm đảo ngược list
  5. Viết hàm trộn 2 list đã sắp xếp thành 1 list sắp xếp

Danh sách (List) trong Python

List là kiểu dữ liệu dùng để lưu trữ nhiều giá trị trong một biến, có thể thay đổi nội dung

# Khai báo list tên_biến = [] # Khai báo list rỗng tên_biến = ["Các", "phần", "tử", ...] # Khai báo list có phần tử
# Khai báo list danh_sach = [1, 2, "Python", 3.14] # Truy cập phần tử print(danh_sach[0]) # 1 print(danh_sach[3]) # 3.14

Các phương thức xử lý list

# Khai báo list Tên_biến = [] # Khai báo list rỗng Tên_biến = ["Các", "phần", "tử", ...] # Khai báo list có phần tử # ví dụ danh_sach = [1, 2, "Python", 3.14] # Các phương thức xử lý list thường dùng Phương thức Cú pháp Mô tả append danh_sach.append(item) Thêm item vào cuối danh_sach. extend danh_sach.extend(danh_sach_2) Thêm danh_sach_2 vào cuối danh_sach. insert danh_sach.insert(index, item) Chèn item vào vị trí index. remove danh_sach.remove(item) Xóa phần tử đầu tiên có giá trị item. pop danh_sach.pop([index]) Xóa và trả về phần tử tại index clear danh_sach.clear() Xóa tất cả phần tử trong danh_sach. sort danh_sach.sort() Sắp xếp danh_sach reverse danh_sach.reverse() Đảo ngược thứ tự các phần tử. index danh_sach.index(item, [start, [end]]) Trả về chỉ số đầu tiên của item count danh_sach.count(item) Đếm số lần xuất hiện của item. copy danh_sach.copy() Tạo bản sao của danh_sach. join str.join(danh_sach) Nối các phần tử chuỗi trong danh_sach. min min(danh_sach) Tìm phần tử nhỏ nhất trong danh_sach. max max(danh_sach) Tìm phần tử lớn nhất trong danh_sach. sum sum(danh_sach, [start]) Tính tổng các phần tử trong danh_sach.
# Khai báo list danh_sach = [1, 2, "Python", 3.14] # Ví dụ các phương thức list # Thêm phần tử danh_sach.append("mới") danh_sach.insert(1, "thêm") # Xóa phần tử danh_sach.remove("Python") phan_tu = danh_sach.pop(2)
# Khai báo list so = [5, 2, 8, 1] print(len(so)) # 4 - Độ dài list print(min(so)) # 1 - Giá trị nhỏ nhất print(max(so)) # 8 - Giá trị lớn nhất print(sum(so)) # 16 - Tổng các phần tử số so.sort() # Sắp xếp tăng dần print(so) # [1, 2, 5, 8] so.reverse() # Đảo ngược list print(so) # [8, 5, 2, 1] xau = "-".join(["2023", "12", "31"]) print(xau) # "2023-12-31"
Mẹo hay: Bạn có thể dùng list comprehension để tạo list ngắn gọn: [x**2 for x in range(5)] tạo list [0, 1, 4, 9, 16]

4️⃣ Chương 4: Kiểm thử và gỡ lỗi chương trình

Khởi động nào!

Câu 1: Lỗi nào phát hiện khi chạy chương trình?

A. Lỗi cú pháp
B. Lỗi thực thi
C. Lỗi logic
D. Tất cả đều đúng

Câu 2: Câu lệnh nào bắt lỗi trong Python?

A. catch
B. try-except
C. handle
D. rescue

Câu 3: Hàm nào dùng để kiểm tra điều kiện?

A. check()
B. verify()
C. assert
D. confirm()

Câu 4: Lỗi "ZeroDivisionError" là gì?

A. Chia cho 0
B. Không tìm thấy file
C. Sai tên biến
D. Sai cú pháp

Câu 5: Công cụ nào giúp gỡ lỗi trong Python?

A. debugger
B. pdb
C. trace
D. Tất cả đều đúng

Thực hành

  1. Viết hàm nhập số nguyên với xử lý ngoại lệ nhập không phải số
  2. Viết hàm tính tổng 2 số nhập từ bàn phím, xử lý nhập liệu không phải số
  3. Viết hàm chia 2 số với xử lý ngoại lệ chia cho 0
  4. Viết hàm tính tổng các phần tử trong danh sách với xử lý lỗi danh sách trống, phần tử không phải là số
  5. Viết hàm kiểm tra số nguyên tố, Xử lý lỗi khi người dùng nhập dữ liệu không phải số và chỉ cho nhập số nguyên dương.

Các loại lỗi phổ biến

  • Lỗi cú pháp (SyntaxError): Viết sai cú pháp Python
  • Lỗi thực thi (RuntimeError): Lỗi khi chạy chương trình
  • Lỗi logic: Chương trình chạy nhưng cho kết quả sai
# Ví dụ lỗi cú pháp if x > 5 # Thiếu dấu : print("Lớn hơn 5") # Ví dụ lỗi thực thi print(10 / 0) # ZeroDivisionError

Xử lý ngoại lệ với try-except

try: # Code có thể gây lỗi except Loại_lỗi: # Xử lý khi lỗi xảy ra else: # Chạy khi không có lỗi finally: # Luôn chạy dù có lỗi hay không # Các lỗi thường gặp phải Tên lỗi Khi nào xảy ra? Ví dụ gây lỗi ZeroDivisionError Chia một số cho 0 x = 10 / 0 TypeError Thực hiện thao tác sai kiểu dữ liệu "Hello" + 5 ValueError Kiểu dữ liệu đúng nhưng giá trị không hợp lệ int("abc") NameError Gọi một biến chưa được khai báo print(xyz) IndexError Truy cập chỉ số không tồn tại lst = [1, 2]; print(lst[5])
# Ví dụ xử lý lỗi nhập số try: tuoi = int(input("Nhập tuổi: ")) except ValueError: print("Bạn phải nhập số!") else: print("Tuổi của bạn là:", tuoi) finally: print("Kết thúc chương trình")
Mẹo gỡ lỗi: Sử dụng print() để in giá trị biến tại các điểm quan trọng, hoặc dùng thư viện pdb (Python Debugger) để chạy từng bước và kiểm tra biến.

5️⃣ Chương 5: Lập trình giải quyết bài toán

Khởi động nào!

Câu 1: Bước đầu tiên khi giải bài toán lập trình là gì?

A. Phân tích yêu cầu
B. Viết code ngay
C. Chạy thử chương trình
D. Tìm lỗi

Câu 2: Công cụ nào giúp mô tả thuật toán?

A. Bảng tính
B. Lưu đồ (flowchart)
C. Trình soạn thảo
D. Trình duyệt

Câu 3: Kỹ thuật chia bài toán lớn thành các phần nhỏ gọi là gì?

A. Chia để trị
B. Lặp lại
C. Nhân bản
D. Đệ quy

Câu 4: Thuật toán nào tìm giá trị lớn nhất trong list?

A. Duyệt từ cuối list
B. Duyệt và so sánh từng phần tử
C. Sắp xếp list rồi lấy phần tử đầu
D. Tất cả đều đúng

Câu 5: Kỹ thuật hàm gọi lại chính nó gọi là gì?

A. Lặp
B. Đệ quy
C. Gọi hàm
D. Xếp chồng

Thực hành

  1. Viết hàm xuất các ước của 1 số ra màn hình (trừ chính nó)
  2. Tìm ước chung lớn nhất của 2 số được nhập từ bàn phím
  3. Giải phương trình bậc 2. a, b, c được nhập từ bàn phím
  4. Sắp xếp list được nhập vào từ bàn phím
  5. Kiểm tra số nguyên tố được nhập từ bàn phím

Quy trình giải bài toán lập trình

  1. Phân tích yêu cầu bài toán
  2. Xác định input và output
  3. Thiết kế thuật toán (có thể dùng lưu đồ)
  4. Viết chương trình
  5. Kiểm thử và gỡ lỗi
  6. Tối ưu chương trình
# Ví dụ lưu đồ giải thuật phương trình bậc 2
# Quy ước
# Ví dụ giải phương trình bậc 2 (a khác 0) import math def giai_pt_bac_2(a, b, c): delta = b**2 - 4*a*c if delta < 0: return "Phương trình vô nghiệm" elif delta == 0: x = -b / (2*a) return f"Phương trình có nghiệm kép x = {x}" else: x1 = (-b + math.sqrt(delta)) / (2*a) x2 = (-b - math.sqrt(delta)) / (2*a) return f"Phương trình có 2 nghiệm x1 = {x1}, x2 = {x2}" # Sử dụng hàm print(giai_pt_bac_2(1, -5, 6)) # x^2 -5x +6 =0
Lời khuyên: Luôn bắt đầu với thuật toán đơn giản nhất, sau đó tối ưu dần. Viết code rõ ràng, có chú thích và chia thành các hàm nhỏ để dễ kiểm tra và sửa lỗi.

Bạn có thể tạo lưu đồ online tại https://app.diagrams.net

6️⃣ Chương 6: AI và Lập trình Python

Khởi động nào!

Câu 1: AI nào phổ biến nhất hỗ trợ lập trình hiện nay?

A. Google Assistant
B. ChatGPT
C. Siri
D. Alexa

Câu 2: AI có thể giúp gì khi lập trình Python?

A. Viết code
B. Gỡ lỗi
C. Giải thích code
D. Tất cả đều đúng

Câu 3: Khi nhờ AI viết code, bạn nên làm gì?

A. Tin tưởng hoàn toàn
B. Kiểm tra lại code
C. Sao chép nguyên xi
D. Không cần hiểu code

Câu 4: Câu lệnh nào tốt nhất để nhờ AI giải thích code?

A. "Code này là gì?"
B. "Giải thích từng dòng code này: [dán code]"
C. "Dịch code này"
D. "Code này chạy được không?"

Câu 5: Khi gặp lỗi, bạn nên làm gì với AI?

A. Bỏ qua lỗi
B. Sao chép thông báo lỗi và hỏi AI
C. Tự sửa ngay
D. Xóa code đi viết lại

Thực hành

  1. Dùng AI viết hàm tính diện tích hình tròn
  2. Nhờ AI giải thích một đoạn code Python
  3. Yêu cầu AI tìm lỗi trong code bạn viết
  4. Hỏi AI cách cải thiện code của bạn
  5. Thử yêu cầu AI viết trò chơi rắn săn mồi đơn giản bằng Python

AI - Trợ thủ đắc lực của lập trình viên

Trí tuệ nhân tạo (AI) như ChatGPT có thể giúp bạn học và thực hành lập trình Python hiệu quả hơn:

# Các cách sử dụng AI để học lập trình 1. Hỏi AI khi gặp lỗi code 2. Nhờ AI giải thích khái niệm khó 3. Yêu cầu AI viết code mẫu 4. Nhờ AI kiểm tra và tối ưu code 5. Hỏi AI về cách tiếp cận bài toán
# Ví dụ yêu cầu AI viết code "Hãy viết hàm Python tính giai thừa của một số, có giải thích từng bước" # Ví dụ nhờ AI gỡ lỗi "Mình có đoạn code sau báo lỗi 'IndexError: list index out of range'. Hãy giúp mình sửa lỗi và giải thích tại sao: [dán code]" # Ví dụ nhờ AI giải thích code "Giải thích từng dòng code Python sau: [dán code]"

Cách sử dụng ChatGPT để học Python hiệu quả

Mẹo hay: Khi hỏi AI, hãy cung cấp thông tin đầy đủ:
  • Mục đích của code bạn muốn viết
  • Bất kỳ lỗi nào bạn gặp phải (sao chép nguyên văn thông báo lỗi)
  • Phiên bản Python bạn đang dùng
  • Những gì bạn đã thử và kết quả ra sao

Những điều cần lưu ý khi dùng AI

# Nhớ rằng AI có thể sai - luôn kiểm tra lại 1. Đừng tin tưởng AI 100% 2. Luôn kiểm tra code AI cung cấp 3. Cố gắng hiểu code thay vì chỉ sao chép 4. Dùng AI như công cụ hỗ trợ, không thay thế việc học 5. Kết hợp kiến thức từ nhiều nguồn
Lời khuyên: AI là công cụ tuyệt vời để học lập trình, nhưng quan trọng nhất vẫn là tư duy và sự hiểu biết của bạn. Hãy dùng AI để hỗ trợ, không phải để thay thế hoàn toàn việc học và thực hành của bạn.

7️⃣ Chương 7: Ôn tập cuối khóa

Trắc nghiệm tổng hợp (20 câu)

Câu 1: Kết quả của 5 + 3 * 2 là bao nhiêu?

A. 16
B. 11
C. 13
D. 10

Câu 2: Hàm nào dùng để nhập dữ liệu từ bàn phím?

A. print()
B. input()
C. read()
D. get()

Câu 3: Phương thức nào thêm phần tử vào cuối list?

A. insert()
B. append()
C. add()
D. push()

Câu 4: "hello".upper() trả về gì?

A. "HELLO"
B. "Hello"
C. "hello"
D. Lỗi

Câu 5: Lệnh nào dùng để xử lý ngoại lệ?

A. if-else
B. try-except
C. for
D. while

Câu 6: Hàm nào tính độ dài list?

A. len()
B. size()
C. length()
D. count()

Câu 7: Kết quả của "Python"[1:3] là gì?

A. "Pyt"
B. "yt"
C. "yth"
D. "Py"

Câu 8: Thư viện nào chứa hàm sqrt()?

A. math
B. random
C. datetime
D. os

Câu 9: Hàm nào kiểm tra một số có phải số chẵn?

A. number % 2 == 1
B. number % 2 == 0
C. number / 2 == 0
D. number // 2 == 1

Câu 10: Lệnh nào tạo vòng lặp từ 0 đến 4?

A. for i in 5:
B. for i in range(5):
C. for i in (0,5):
D. for i from 0 to 5:

Câu 11: Phương thức nào tách xâu thành list?

A. split()
B. join()
C. partition()
D. divide()

Câu 12: Giá trị trả về của hàm không có return là gì?

A. 0
B. None
C. ""
D. False

Câu 13: Lệnh nào in ra "Hello" 3 lần?

A. print("Hello" * 3)
B. print("Hello" * 3)
C. print(Hello * 3)
D. print("Hello" + "Hello" + "Hello")

Câu 14: Hàm nào tính tổng các phần tử trong list?

A. sum()
B. total()
C. add()
D. calculate()

Câu 15: Lỗi khi chia cho 0 là gì?

A. ZeroDivisionError
B. ValueError
C. MathError
D. CalculationError

Câu 16: Phương thức nào đảo ngược list?

A. reverse()
B. invert()
C. flip()
D. backward()

Câu 17: Hàm nào chuyển xâu thành số nguyên?

A. int()
B. float()
C. str()
D. number()

Câu 18: Lệnh nào nhập thư viện math?

A. include math
B. import math
C. require math
D. using math

Câu 19: "123".isdigit() trả về gì?

A. True
B. False
C. "123"
D. Lỗi

Câu 20: Từ khóa nào định nghĩa hàm?

A. function
B. def
C. define
D. func

Bài tập thực hành (30 bài)

1. Viết hàm tính tổng hai số

def tinh_tong(a, b): return a + b

2. Viết hàm kiểm tra số nguyên tố

def la_so_nguyen_to(n): if n < 2: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True

3. Viết hàm tính giai thừa

def giai_thua(n): if n == 0: return 1 return n * giai_thua(n-1)

4. Viết hàm in bảng cửu chương từ 1 đến 10

def in_bang_cuu_chuong(): for i in range(1, 11): for j in range(1, 11): print(f"{i} x {j} = {i*j}") print()

5. Viết hàm đảo ngược xâu ký tự

def dao_nguoc_xau(s): return s[::-1]

6. Viết hàm đếm số từ trong câu

def dem_so_tu(cau): return len(cau.split())

7. Viết hàm kiểm tra xâu đối xứng

def la_xau_doi_xung(s): return s == s[::-1]

8. Viết hàm chuyển tên thành dạng viết hoa chữ cái đầu

def viet_hoa_chu_cai_dau(ten): return ' '.join([word.capitalize() for word in ten.split()])

9. Viết hàm tính tổng các phần tử trong list

def tong_list(lst): return sum(lst)

10. Viết hàm tìm giá trị lớn nhất trong list

def tim_max(lst): return max(lst)

11. Viết hàm đảo ngược list

def dao_nguoc_list(lst): return lst[::-1]

12. Viết hàm kiểm tra list có chứa số nguyên tố

def co_so_nguyen_to(lst): for num in lst: if la_so_nguyen_to(num): return True return False

13. Viết hàm trộn 2 list đã sắp xếp thành 1 list sắp xếp

def tron_list_sap_xep(lst1, lst2): return sorted(lst1 + lst2)

14. Viết hàm chia 2 số với xử lý ngoại lệ chia cho 0

def chia_2_so(a, b): try: return a / b except ZeroDivisionError: return "Không thể chia cho 0"

15. Viết hàm nhập số nguyên với xử lý ngoại lệ

def nhap_so_nguyen(): while True: try: return int(input("Nhập số nguyên: ")) except ValueError: print("Vui lòng nhập số nguyên hợp lệ!")

16. Viết hàm kiểm tra điều kiện bằng assert

def kiem_tra_so_duong(n): assert n > 0, "Số phải lớn hơn 0" return f"{n} là số dương"

17. Viết chương trình đọc file với xử lý ngoại lệ

def doc_file(ten_file): try: with open(ten_file, 'r') as f: return f.read() except FileNotFoundError: return "Không tìm thấy file"

18. Giải phương trình bậc 2

import math def giai_pt_bac_2(a, b, c): delta = b**2 - 4*a*c if delta < 0: return "Vô nghiệm" elif delta == 0: x = -b/(2*a) return f"Nghiệm kép x = {x}" else: x1 = (-b + math.sqrt(delta))/(2*a) x2 = (-b - math.sqrt(delta))/(2*a) return f"2 nghiệm x1 = {x1}, x2 = {x2}"

19. Tìm ước chung lớn nhất (GCD) bằng thuật toán Euclid

def gcd(a, b): while b != 0: a, b = b, a % b return a

20. Sắp xếp list bằng thuật toán bubble sort

def bubble_sort(lst): n = len(lst) for i in range(n): for j in range(0, n-i-1): if lst[j] > lst[j+1]: lst[j], lst[j+1] = lst[j+1], lst[j] return lst

21. Tìm kiếm nhị phân trong list đã sắp xếp

def binary_search(lst, x): low = 0 high = len(lst) - 1 while low <= high: mid = (low + high) // 2 if lst[mid] < x: low = mid + 1 elif lst[mid] > x: high = mid - 1 else: return mid return -1

22. Tính số Fibonacci bằng đệ quy

def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2)

23. Tính số Fibonacci không dùng đệ quy

def fibonacci_khong_de_quy(n): a, b = 0, 1 for _ in range(n): a, b = b, a + b return a

24. Viết hàm tính diện tích hình tròn

import math def dien_tich_hinh_tron(r): return math.pi * r**2

25. Viết hàm tính chu vi hình chữ nhật

def chu_vi_hinh_chu_nhat(a, b): return 2 * (a + b)

26. Viết chương trình máy tính đơn giản (+, -, *, /)

def may_tinh_don_gian(): a = float(input("Nhập số thứ nhất: ")) phep_toan = input("Nhập phép toán (+, -, *, /): ") b = float(input("Nhập số thứ hai: ")) if phep_toan == '+': return a + b elif phep_toan == '-': return a - b elif phep_toan == '*': return a * b elif phep_toan == '/': return a / b else: return "Phép toán không hợp lệ"

27. Viết chương trình đếm ngược từ 10 về 0

def dem_nguoc(): for i in range(10, -1, -1): print(i)

28. Viết chương trình kiểm tra năm nhuận

def la_nam_nhuan(nam): if nam % 400 == 0: return True if nam % 100 == 0: return False return nam % 4 == 0

29. Viết chương trình chuyển đổi độ C sang độ F

def doi_C_sang_F(c): return c * 9/5 + 32

30. Viết chương trình in ra các số chẵn từ 1 đến 100

def in_so_chan(): for i in range(2, 101, 2): print(i)
Lời khuyên ôn tập:
  • Sử dụng công cụ AI để tìm hiểu và giải thích thuật toán, code hoặc viết hàm
  • Xem lại các khái niệm cơ bản về hàm, biến, vòng lặp, điều kiện
  • Thực hành nhiều với list và xâu ký tự
  • Luyện tập xử lý ngoại lệ và gỡ lỗi
  • Phân tích bài toán trước khi viết code
  • Kiểm tra kỹ code trước khi chạy
Mẹo làm bài tập:
  1. Bắt đầu với các bài dễ trước khi làm bài khó
  2. Chạy thử từng hàm với nhiều đầu vào khác nhau
  3. Sử dụng print() để kiểm tra giá trị biến khi cần
  4. Tái sử dụng các hàm đã viết khi làm bài phức tạp
  5. Đọc kỹ thông báo lỗi khi chương trình không chạy

🎉 Chúc mừng bạn đã hoàn thành giáo trình Python cho trẻ! 🎉

Hãy tiếp tục khám phá thế giới lập trình đầy thú vị!