ÔN TẬP VÀ KIỂM TRA CUỐI KHÓA PYTHON CƠ BẢN¶
Mục tiêu học tập¶
Sau buổi học này, học sinh sẽ có thể:
- Ôn tập và hệ thống hóa toàn bộ kiến thức Python cơ bản đã học
- Tổng hợp các khái niệm và cú pháp từ cơ bản đến nâng cao
- Vận dụng kiến thức để giải quyết các bài tập thực tế
- Chuẩn bị tốt cho bài kiểm tra cuối khóa
- Đánh giá được khả năng lập trình Python của bản thân
📚 Kiến thức cần ôn tập¶
1. Kiến thức cơ bản (Buổi 1-4)¶
1.1 Biến và kiểu dữ liệu¶
# Các kiểu dữ liệu cơ bản
so_nguyen = 10 # int
so_thuc = 3.14 # float
chuoi = "Hello Python" # str
logic = True # bool
# Ép kiểu dữ liệu
tuoi = int(input("Nhập tuổi: "))
diem = float(input("Nhập điểm: "))
1.2 Nhập xuất và xử lý chuỗi¶
# Nhập xuất cơ bản
ten = input("Tên bạn: ")
print(f"Xin chào {ten}!")
# Xử lý chuỗi
chuoi = " Python Programming "
print(chuoi.strip().upper()) # "PYTHON PROGRAMMING"
print(chuoi.replace("Python", "Java"))
1.3 Toán học với Python¶
import math
# Phép toán cơ bản
a, b = 10, 3
print(f"Chia lấy phần nguyên: {a // b}") # 3
print(f"Chia lấy dư: {a % b}") # 1
print(f"Lũy thừa: {a ** b}") # 1000
# Sử dụng module math
print(f"Căn bậc hai: {math.sqrt(16)}") # 4.0
print(f"Làm tròn: {round(3.14159, 2)}") # 3.14
2. Cấu trúc dữ liệu (Buổi 5-6, 10-11)¶
2.1 List (Danh sách)¶
# Khởi tạo và thao tác
danh_sach = [1, 2, 3, 4, 5]
danh_sach.append(6) # Thêm phần tử
danh_sach.remove(3) # Xóa phần tử
danh_sach[0] = 10 # Sửa phần tử
# Duyệt list
for item in danh_sach:
print(item)
# List comprehension
binh_phuong = [x**2 for x in range(1, 6)] # [1, 4, 9, 16, 25]
2.2 Tuple (Bộ)¶
# Tuple không thể thay đổi
toa_do = (10, 20)
x, y = toa_do # Unpacking
# Tuple trong list
danh_sach_diem = [("Toán", 8.5), ("Lý", 9.0), ("Hóa", 7.5)]
for mon, diem in danh_sach_diem:
print(f"{mon}: {diem}")
2.3 Set (Tập hợp)¶
# Loại bỏ phần tử trùng lặp
so_trung = [1, 2, 2, 3, 3, 4]
so_doc_nhat = list(set(so_trung)) # [1, 2, 3, 4]
# Phép toán tập hợp
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
print(f"Hợp: {A | B}") # {1, 2, 3, 4, 5, 6}
print(f"Giao: {A & B}") # {3, 4}
print(f"Hiệu: {A - B}") # {1, 2}
2.4 Dictionary (Từ điển)¶
# Lưu trữ thông tin có cấu trúc
hoc_sinh = {
"ten": "Nguyễn Văn An",
"tuoi": 16,
"lop": "10A1",
"diem": {"toan": 8.5, "ly": 9.0, "hoa": 7.5}
}
# Truy cập và duyệt
print(hoc_sinh["ten"])
for mon, diem in hoc_sinh["diem"].items():
print(f"{mon}: {diem}")
3. Cấu trúc điều khiển (Buổi 7-9)¶
3.1 Câu lệnh điều kiện¶
# If-elif-else
diem = float(input("Nhập điểm: "))
if diem >= 9:
xep_loai = "Xuất sắc"
elif diem >= 8:
xep_loai = "Giỏi"
elif diem >= 6.5:
xep_loai = "Khá"
elif diem >= 5:
xep_loai = "Trung bình"
else:
xep_loai = "Yếu"
print(f"Xếp loại: {xep_loai}")
3.2 Vòng lặp¶
# Vòng lặp for
for i in range(1, 6):
print(f"Số {i}")
# Vòng lặp while
dem = 0
while dem < 5:
print(f"Lần thứ {dem + 1}")
dem += 1
# Break và continue
for i in range(10):
if i == 3:
continue # Bỏ qua số 3
if i == 7:
break # Dừng khi gặp số 7
print(i)
3.3 Vòng lặp lồng nhau¶
# Bảng cửu chương
for i in range(1, 10):
for j in range(1, 10):
print(f"{i} x {j} = {i*j}")
print("-" * 20)
4. Hàm và xử lý lỗi (Buổi 12-13)¶
4.1 Định nghĩa và sử dụng hàm¶
# Hàm không tham số
def chao_hoi():
print("Xin chào các bạn!")
# Hàm có tham số và return
def tinh_dien_tich_hinh_chu_nhat(dai, rong):
return dai * rong
# Hàm với tham số mặc định
def chao_ten(ten, tuoi=18):
return f"Xin chào {ten}, {tuoi} tuổi!"
# Gọi hàm
chao_hoi()
dien_tich = tinh_dien_tich_hinh_chu_nhat(5, 3)
print(chao_ten("An", 16))
4.2 Xử lý ngoại lệ¶
def chia_an_toan(a, b):
try:
ket_qua = a / b
return ket_qua
except ZeroDivisionError:
print("Lỗi: Không thể chia cho 0!")
return None
except ValueError:
print("Lỗi: Giá trị không hợp lệ!")
return None
finally:
print("Kết thúc phép chia")
# Sử dụng
print(chia_an_toan(10, 2)) # 5.0
print(chia_an_toan(10, 0)) # Lỗi: Không thể chia cho 0!
5. Module và thư viện (Buổi 14)¶
5.1 Sử dụng module có sẵn¶
import math
import random
from datetime import datetime
# Module math
print(f"Pi: {math.pi}")
print(f"Căn bậc hai của 25: {math.sqrt(25)}")
# Module random
so_ngau_nhien = random.randint(1, 100)
mau_ngau_nhien = random.choice(['đỏ', 'xanh', 'vàng'])
# Module datetime
ngay_hom_nay = datetime.now()
print(f"Hôm nay: {ngay_hom_nay.strftime('%d/%m/%Y')}")
5.2 Tạo module riêng¶
# file: tinh_toan.py
def cong(a, b):
return a + b
def nhan(a, b):
return a * b
# file: main.py
import tinh_toan
ket_qua = tinh_toan.cong(5, 3)
print(ket_qua) # 8
6. Giao diện đồ họa Tkinter (Buổi 15-16)¶
6.1 Tkinter cơ bản¶
import tkinter as tk
from tkinter import messagebox
# Tạo cửa sổ chính
window = tk.Tk()
window.title("Ứng dụng Python")
window.geometry("400x300")
# Thêm nhãn
label = tk.Label(window, text="Xin chào Python!", font=("Arial", 14))
label.pack(pady=20)
# Thêm nút
def xu_ly_click():
messagebox.showinfo("Thông báo", "Bạn đã click nút!")
button = tk.Button(window, text="Click me!", command=xu_ly_click)
button.pack(pady=10)
# Chạy ứng dụng
window.mainloop()
6.2 Form nhập liệu¶
import tkinter as tk
def tinh_diem_tb():
try:
toan = float(entry_toan.get())
ly = float(entry_ly.get())
hoa = float(entry_hoa.get())
tb = (toan + ly + hoa) / 3
label_kq.config(text=f"Điểm TB: {tb:.2f}")
except ValueError:
label_kq.config(text="Vui lòng nhập số hợp lệ!")
window = tk.Tk()
window.title("Tính điểm trung bình")
# Entry fields
tk.Label(window, text="Toán:").grid(row=0, column=0)
entry_toan = tk.Entry(window)
entry_toan.grid(row=0, column=1)
tk.Label(window, text="Lý:").grid(row=1, column=0)
entry_ly = tk.Entry(window)
entry_ly.grid(row=1, column=1)
tk.Label(window, text="Hóa:").grid(row=2, column=0)
entry_hoa = tk.Entry(window)
entry_hoa.grid(row=2, column=1)
# Button và kết quả
tk.Button(window, text="Tính", command=tinh_diem_tb).grid(row=3, column=0, columnspan=2)
label_kq = tk.Label(window, text="Kết quả:")
label_kq.grid(row=4, column=0, columnspan=2)
window.mainloop()
🔄 Các mẫu bài tập thường gặp¶
1. Xử lý số và toán học¶
# 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
# Tính giai thừa
def giai_thua(n):
if n <= 1:
return 1
return n * giai_thua(n - 1)
# Dãy Fibonacci
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
2. Xử lý chuỗi¶
# Đếm ký tự
def dem_ky_tu(chuoi):
chu_cai = so = dac_biet = 0
for char in chuoi:
if char.isalpha():
chu_cai += 1
elif char.isdigit():
so += 1
else:
dac_biet += 1
return chu_cai, so, dac_biet
# Kiểm tra palindrome
def la_palindrome(chuoi):
chuoi = chuoi.lower().replace(" ", "")
return chuoi == chuoi[::-1]
3. Xử lý danh sách¶
# Tìm phần tử lớn nhất, nhỏ nhất
def tim_min_max(danh_sach):
return min(danh_sach), max(danh_sach)
# Sắp xếp
def sap_xep_tang_dan(danh_sach):
return sorted(danh_sach)
# Lọc phần tử
def loc_so_chan(danh_sach):
return [x for x in danh_sach if x % 2 == 0]
4. Quản lý dữ liệu với Dictionary¶
# Quản lý danh sách học sinh
hoc_sinh_db = {}
def them_hoc_sinh(ma_hs, ten, tuoi, diem):
hoc_sinh_db[ma_hs] = {
"ten": ten,
"tuoi": tuoi,
"diem": diem
}
def tim_hoc_sinh(ma_hs):
return hoc_sinh_db.get(ma_hs, "Không tìm thấy")
def tinh_diem_tb_lop():
if not hoc_sinh_db:
return 0
tong_diem = sum(hs["diem"] for hs in hoc_sinh_db.values())
return tong_diem / len(hoc_sinh_db)
💡 Mẹo và thủ thuật lập trình¶
1. Debug và tìm lỗi¶
# Sử dụng print để debug
def tinh_tong(danh_sach):
print(f"Input: {danh_sach}") # Debug input
tong = 0
for i, num in enumerate(danh_sach):
tong += num
print(f"Bước {i+1}: {num}, Tổng hiện tại: {tong}") # Debug từng bước
return tong
# Sử dụng try-except để bắt lỗi
def nhap_so_an_toan():
while True:
try:
so = int(input("Nhập một số: "))
return so
except ValueError:
print("Vui lòng nhập một số hợp lệ!")
2. Tối ưu code¶
# Sử dụng list comprehension thay vì vòng lặp
# Cách cũ
binh_phuong = []
for i in range(10):
binh_phuong.append(i**2)
# Cách mới
binh_phuong = [i**2 for i in range(10)]
# Sử dụng enumerate thay vì range(len())
danh_sach = ['a', 'b', 'c']
# Cách cũ
for i in range(len(danh_sach)):
print(i, danh_sach[i])
# Cách mới
for i, item in enumerate(danh_sach):
print(i, item)
3. Code sạch và dễ đọc¶
# Đặt tên biến có ý nghĩa
# Không tốt
a = 3.14159
b = 5
c = a * b * b
# Tốt
PI = 3.14159
ban_kinh = 5
dien_tich_hinh_tron = PI * ban_kinh * ban_kinh
# Chia nhỏ hàm
def tinh_diem_trung_binh_mon_hoc(diem_15p, diem_1t, diem_thi):
"""Tính điểm trung bình môn học theo quy định"""
return (diem_15p + diem_1t * 2 + diem_thi * 3) / 6
def xep_loai_hoc_luc(diem_tb):
"""Xếp loại học lực dựa vào điểm trung bình"""
if diem_tb >= 8:
return "Giỏi"
elif diem_tb >= 6.5:
return "Khá"
elif diem_tb >= 5:
return "Trung bình"
else:
return "Yếu"
📝 Bài tập thực hành tại lớp¶
Bài 1: Quản lý điểm số học sinh¶
Viết chương trình quản lý điểm số với các chức năng:
- Nhập thông tin học sinh (tên, điểm các môn)
- Tính điểm trung bình
- Xếp loại học lực
- Tìm học sinh có điểm cao nhất/thấp nhất
Bài 2: Trò chơi đoán số¶
Tạo trò chơi đoán số với:
- Máy tính tạo số ngẫu nhiên từ 1-100
- Người chơi có 7 lần đoán
- Có gợi ý "lớn hơn" hoặc "nhỏ hơn"
- Hiển thị điểm số dựa trên số lần đoán
Bài 3: Máy tính mini với Tkinter¶
Tạo giao diện máy tính có:
- Các nút số từ 0-9
- Các phép toán cơ bản (+, -, *, /)
- Nút xóa và bằng
- Hiển thị kết quả
Bài 4: Phân tích văn bản¶
Viết chương trình phân tích một đoạn văn bản:
- Đếm số từ, số câu, số ký tự
- Tìm từ xuất hiện nhiều nhất
- Thống kê độ dài trung bình của từ
🏠 Bài tập về nhà¶
Bài 1: Hệ thống quản lý thư viện sách¶
Tạo chương trình quản lý thư viện đơn giản với dictionary lưu thông tin sách.
Bài 2: Game snake đơn giản¶
Sử dụng Tkinter tạo game rắn săn mồi cơ bản.
Bài 3: Ứng dụng quản lý chi tiêu¶
Tạo ứng dụng theo dõi thu chi cá nhân với giao diện Tkinter.
Bài 4: Chương trình vẽ hình học¶
Sử dụng Tkinter Canvas vẽ các hình học cơ bản theo input người dùng.
📋 Chuẩn bị cho bài kiểm tra¶
1. Lý thuyết cần nắm vững¶
- Các kiểu dữ liệu cơ bản và cách sử dụng
- Cấu trúc điều khiển (if-else, for, while)
- List, Tuple, Set, Dictionary và các phương thức
- Định nghĩa và sử dụng hàm
- Xử lý ngoại lệ với try-except
- Import và sử dụng module
- Tkinter cơ bản
2. Kỹ năng lập trình¶
- Đọc hiểu đề bài và phân tích bài toán
- Thiết kế thuật toán từng bước
- Viết code sạch, có comment
- Debug và sửa lỗi
- Test chương trình với nhiều trường hợp
3. Các dạng bài thường gặp¶
- Xử lý số (nguyên tố, fibonacci, giai thừa)
- Xử lý chuỗi (đếm ký tự, tìm kiếm, thay thế)
- Xử lý danh sách (sắp xếp, tìm kiếm, lọc)
- Quản lý dữ liệu với dictionary
- Tạo giao diện đơn giản với Tkinter
🎯 Ghi chú quan trọng¶
Những lỗi thường gặp cần tránh¶
- Lỗi cú pháp: Thiếu dấu hai chấm (:), sai indent
- Lỗi logic: Vòng lặp vô hạn, điều kiện sai
- Lỗi runtime: Chia cho 0, index ngoài phạm vi
- Lỗi nhập liệu: Không xử lý input không hợp lệ
Chiến lược làm bài thi¶
- Đọc kỹ đề: Hiểu rõ yêu cầu trước khi code
- Lên kế hoạch: Viết thuật toán trước khi code
- Code từng phần: Chia bài toán thành các hàm nhỏ
- Test thường xuyên: Chạy thử với dữ liệu mẫu
- Comment code: Giải thích logic cho người đọc
Tài nguyên tham khảo¶
- Documentation Python chính thức
- Các ví dụ trong giáo trình
- Bài tập đã làm trong các buổi học
- Cộng đồng lập trình Python Việt Nam
🚀 Hướng phát triển tiếp theo¶
Sau khi hoàn thành khóa học Python cơ bản, học sinh có thể tiếp tục học:
Intermediate Python¶
- OOP (Lập trình hướng đối tượng)
- File handling (Xử lý file)
- Database (Cơ sở dữ liệu)
- Web scraping
- API và REST
Chuyên sâu theo hướng¶
- Web Development: Django, Flask, FastAPI
- Data Science: Pandas, NumPy, Matplotlib
- Machine Learning: Scikit-learn, TensorFlow
- Desktop Apps: PyQt, Kivy
- Game Development: Pygame
Dự án thực tế để luyện tập¶
- Website blog cá nhân
- Ứng dụng quản lý tasks
- Bot Telegram/Discord
- Phân tích dữ liệu sales
- Game 2D đơn giản
Chúc các bạn học tập tốt và thành công trong hành trình chinh phục Python! 🐍✨