🚀 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
- Viết hàm tính tổng 2 số
- Viết hàm kiểm tra số chẵn
- Viết hàm tính giai thừa
- Viết hàm tính diện tích hình tròn sử dụng math.pi
- 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
- Viết hàm đảo ngược xâu
- Viết hàm đếm số từ trong câu
- Viết hàm kiểm tra xâu đối xứng
- Viết hàm chuyển tên thành dạng viết hoa chữ cái đầu
- 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
- Viết hàm nhập danh sách từ bàn phím và xuất ra màn hình
- Viết hàm tính tổng các phần tử trong list
- Viết hàm tìm giá trị lớn nhất trong list
- Viết hàm đảo ngược list
- 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
- Viết hàm nhập số nguyên với xử lý ngoại lệ nhập không phải số
- 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ố
- Viết hàm chia 2 số với xử lý ngoại lệ chia cho 0
- 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ố
- 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
- Viết hàm xuất các ước của 1 số ra màn hình (trừ chính nó)
- Tìm ước chung lớn nhất của 2 số được nhập từ bàn phím
- Giải phương trình bậc 2. a, b, c được nhập từ bàn phím
- Sắp xếp list được nhập vào từ bàn phím
- 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
- Phân tích yêu cầu bài toán
- Xác định input và output
- Thiết kế thuật toán (có thể dùng lưu đồ)
- Viết chương trình
- Kiểm thử và gỡ lỗi
- 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
- Dùng AI viết hàm tính diện tích hình tròn
- Nhờ AI giải thích một đoạn code Python
- Yêu cầu AI tìm lỗi trong code bạn viết
- Hỏi AI cách cải thiện code của bạn
- 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
- Bắt đầu với các bài dễ trước khi làm bài khó
- Chạy thử từng hàm với nhiều đầu vào khác nhau
- Sử dụng print() để kiểm tra giá trị biến khi cần
- Tái sử dụng các hàm đã viết khi làm bài phức tạp
- Đọc kỹ thông báo lỗi khi chương trình không chạy