Bỏ qua

Image

Ô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

  1. Lỗi cú pháp: Thiếu dấu hai chấm (:), sai indent
  2. Lỗi logic: Vòng lặp vô hạn, điều kiện sai
  3. Lỗi runtime: Chia cho 0, index ngoài phạm vi
  4. 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

  1. Đọc kỹ đề: Hiểu rõ yêu cầu trước khi code
  2. Lên kế hoạch: Viết thuật toán trước khi code
  3. Code từng phần: Chia bài toán thành các hàm nhỏ
  4. Test thường xuyên: Chạy thử với dữ liệu mẫu
  5. 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! 🐍✨