🎯 Mục Tiêu Bài Học
- Viết chương trình Python giải quyết các bài toán đơn giản.
- Vận dụng cấu trúc điều khiển if...elif...else.
- Viết chương trình sử dụng hàm.
- Thực hành gỡ lỗi bằng Breakpoint và theo dõi giá trị biến.
I. Nội Dung Thực Hành
Yêu cầu:
- Nhập số tự nhiên n
- Kiểm tra n có phải số nguyên tố hay không
- Nếu là hợp số → phân tích thành tích các thừa số nguyên tố
Ý tưởng:
- Dùng biến k bắt đầu từ 2
- Tìm ước nhỏ nhất của m
- Chia m cho k, lưu k vào danh sách
- Lặp đến khi m = 1
Ví dụ: 100 = 2 × 2 × 5 × 5
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def factorize(n):
factors = []
k = 2
m = n
while m > 1:
while m % k == 0:
factors.append(k)
m = m // k
k += 1
return factors
n = int(input("Nhập n: "))
if is_prime(n):
print(f"{n} là số nguyên tố")
else:
factors = factorize(n)
print(f"{n} = {' × '.join(map(str, factors))}")
Chương trình gồm hai hàm:
is_prime(n)Kiểm tra n có phải là số nguyên tố hay không.
- Nếu
n < 2→ trả vềFalse. - Kiểm tra các số từ
2đến√n. - Nếu tìm được ước số của
n→ không phải số nguyên tố (False). - Nếu không có ước nào → là số nguyên tố (
True).
factorize(n)Phân tích n thành tích các thừa số nguyên tố.
- Bắt đầu với
k = 2. - Khi
kchia hết chom, thêmkvào danh sáchfactorsvà chiamchok. - Tăng
klên để tiếp tục tìm các thừa số. - Trả về danh sách các thừa số nguyên tố.
Giải ax² + bx + c = 0 – Xét đầy đủ các trường hợp:
- a = b = c = 0: Vô số nghiệm
- a = b = 0, c ≠ 0: Vô nghiệm
- a = 0, b ≠ 0: PT bậc nhất, x = -c/b
- a ≠ 0: Tính Δ = b² - 4ac
def giai_pt_bac2(a, b, c):
if a == 0 and b == 0 and c == 0:
print("Phương trình có vô số nghiệm")
elif a == 0 and b == 0:
print("Phương trình vô nghiệm")
elif a == 0:
print(f"PT bậc nhất, x = {-c/b}")
else:
delta = b**2 - 4*a*c
if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
print(f"Hai nghiệm: x1 = {x1}, x2 = {x2}")
elif delta == 0:
x = -b / (2*a)
print(f"Nghiệm kép: x = {x}")
else:
print("Phương trình vô nghiệm")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
giai_pt_bac2(a, b, c)
Chương trình giải phương trình:
với các trường hợp:
a = 0,b = 0,c = 0- Phương trình có vô số nghiệm.
a = 0,b = 0,c ≠ 0- Phương trình vô nghiệm.
a = 0,b ≠ 0Đây là phương trình bậc nhất:
Nghiệm:
a ≠ 0Tính biệt thức:
- Nếu
Δ > 0: có 2 nghiệm phân biệt. - Nếu
Δ = 0: có 1 nghiệm kép. - Nếu
Δ < 0: không có nghiệm thực.
II. Gỡ Lỗi Chương Trình
Sử dụng Breakpoint để:
- Dừng chương trình tại vị trí cần kiểm tra
- Quan sát giá trị biến
- Kiểm tra từng bước của thuật toán
- Phát hiện lỗi dễ dàng hơn
III. Kiến Thức Cần Nhớ
- ✅ Sử dụng danh sách để lưu kết quả trung gian.
- ✅ Chia bài toán thành các hàm nhỏ.
- ✅ Xét đầy đủ các trường hợp của bài toán.
- ✅ Sử dụng if...elif...else khi có nhiều điều kiện.
- ✅ Dùng Breakpoint để Debug chương trình.
Luyện Tập
Viết chương trình nhập số thực dương a. Nếu nhập sai (a ≤ 0) thì thông báo: "Nhập sai, số a phải lớn hơn 0. Hãy nhập lại."
Viết chương trình in bảng cửu chương.
Vận Dụng
Nhập hai năm Y1, Y2 (Y2 > Y1). Tính có bao nhiêu năm nhuận từ Y1 đến Y2.
Năm nhuận khi:
- Chia hết cho 400
- Hoặc chia hết cho 4 nhưng không chia hết cho 100
Viết chương trình tính ƯCLN của hai số tự nhiên a, b.
📌 Ghi Nhớ Cuối Bài
- ✅ Chia bài toán thành các hàm để chương trình rõ ràng, dễ bảo trì.
- ✅ Khi giải bài toán, cần xét đầy đủ các trường hợp có thể xảy ra.
- ✅ Sử dụng cấu trúc if...elif...else để xử lý nhiều nhánh điều kiện.
- ✅ Dùng vòng lặp để xử lý các công việc lặp lại.
- ✅ Sử dụng Breakpoint và theo dõi giá trị biến để phát hiện, sửa lỗi.
- ✅ Sau khi sửa lỗi, luôn kiểm thử lại để đảm bảo chương trình hoạt động đúng.
50 Bài Tập Cơ Bản Về Lập Trình Python Cho Người Mới Bắt Đầu
Phân loại theo chủ đề: Nhập/Xuất – Cấu trúc rẽ nhánh – Vòng lặp – Xử lý chuỗi – Danh sách – Hàm – File – Nâng cao cơ bản
🟦 I. Nhập/Xuất – Kiểu dữ liệu – Biến (10 bài)
- Nhập tên và in lời chào.
- Nhập hai số, in tổng, hiệu, tích, thương.
- Nhập bán kính hình tròn, tính chu vi và diện tích.
- Đổi nhiệt độ từ độ C sang độ F.
- Nhập chiều dài và chiều rộng, tính diện tích hình chữ nhật.
- Tính chu vi và diện tích hình tam giác.
- Nhập năm sinh, tính tuổi.
- Nhập số giây, đổi sang giờ:phút:giây.
- Nhập ba số, tính trung bình cộng.
- Kiểm tra kiểu dữ liệu của biến sử dụng
type().
🟦 II. Câu lệnh rẽ nhánh if…elif…else (8 bài)
- Kiểm tra số âm/dương/0.
- Kiểm tra năm nhuận.
- Kiểm tra số chẵn/lẻ.
- So sánh ba số, tìm số lớn nhất.
- Kiểm tra ký tự là nguyên âm hay phụ âm.
- Phân loại học sinh theo điểm (Giỏi/Khá/Trung bình/Yếu).
- Giải phương trình bậc nhất
ax + b = 0. - Giải phương trình bậc hai
ax² + bx + c = 0.
🟦 III. Vòng lặp for – while (10 bài)
- In dãy số từ 1 đến n.
- Tính tổng từ 1 đến n.
- In bảng cửu chương của một số.
- Tính giai thừa của một số.
- In các số chẵn từ 1 đến 100.
- Tìm UCLN và BCNN của hai số.
- Kiểm tra số nguyên tố.
- Liệt kê n số nguyên tố đầu tiên.
- Tính tổng các chữ số của một số.
- Đảo ngược số nguyên.
🟦 IV. Xử lý chuỗi (5 bài)
- Đếm số từ trong câu.
- Đếm số lần xuất hiện của ký tự trong chuỗi.
- Viết hoa toàn bộ chuỗi.
- Kiểm tra chuỗi đối xứng.
- Tách họ, tên đệm, tên từ họ tên đầy đủ.
🟦 V. Danh sách (list) và xử lý danh sách (5 bài)
- Nhập danh sách số nguyên và in ra.
- Tính tổng và trung bình của list.
- Tìm phần tử lớn nhất/nhỏ nhất trong list.
- Sắp xếp danh sách tăng dần.
- Đếm số lần xuất hiện của một phần tử trong list.
🟦 VI. Hàm và gọi hàm (4 bài)
- Viết hàm tính giai thừa.
- Viết hàm kiểm tra số nguyên tố.
- Viết hàm giải phương trình bậc 2.
- Viết hàm tính tổng các chữ số của số nguyên.
🟦 VII. Xử lý tệp (file) cơ bản (3 bài)
- Đọc nội dung từ file văn bản và in ra màn hình.
- Ghi danh sách số vào file.
- Tính tổng các số trong file.
🟦 VIII. Lập trình nâng cao (Tùy chọn mở rộng – cơ bản) (5 bài)
- Tạo từ điển lưu thông tin học sinh.
- Tính tổng các số lẻ trong list bằng list comprehension.
- Viết chương trình quản lý danh bạ đơn giản.
- Đếm số nguyên tố từ 1 đến n dùng hàm và list.
- Mô phỏng máy tính bỏ túi đơn giản (có menu chọn phép toán).
