Mật mã Caesar trong Python
Dịch mỗi chữ cái đi ba vị trí: code thành frgh. Làm quen với ord(), chr() và mẹo % để z quay về a.
- Mã ký tự với ord() và chr()
- Quay vòng bảng chữ cái với % 26
- Ghép chuỗi đã mã hoá
cfordgehDịch chữ và quay vòng
Mật mã Caesar là một trong những phương pháp mã hóa lâu đời nhất. Mỗi chữ cái được thay bằng chữ cái đứng sau nó một số vị trí cố định, ví dụ dịch 3 vị trí thì a thành d, b thành e. Khi đến cuối bảng chữ cái, ta quay vòng lại từ đầu, nên x thành a.
Những điểm quan trọng
ord(ch)-ord("a")biến chữ cái thành số từ 0 đến 25.- (position + shift)
%26 dịch chữ và quay vòng khi vượt quá z. chr(new + ord("a"))đổi số trở lại thành chữ cái.
Khi nào nên sử dụng?
- Làm quen với cú pháp và các khái niệm cơ bản của Python qua những ví dụ ngắn, dễ hiểu.
- Xây dựng nền tảng vững chắc trước khi chuyển sang các bài toán phức tạp hơn.
- Chạy thử code ngay trên trình duyệt mà không cần cài đặt Python trên máy.
Code ví dụ
message = "code"
shift = 3
# Shift each lowercase letter and wrap after z.
encrypted = "".join(
chr((ord(character) - ord("a") + shift) % 26 + ord("a"))
for character in message
)
print(encrypted)
Kết quả khi chạy
frgh
Giải thích code
Hàm ord() trả về mã số của một ký tự. Phép tính ord(character) - ord("a") chuyển chữ cái thành vị trí từ 0 đến 25, sau đó cộng thêm shift và lấy dư cho 26 để quay vòng khi vượt quá z. Hàm chr() chuyển vị trí mới trở lại thành ký tự, nên "code" được mã hóa thành "frgh".
Thay đổi giá trị và chạy chương trình bằng trình chạy Python online của CodeUtility mà không cần cài Python.
Bài tập mở rộng
Hãy thử chỉnh sửa code theo các gợi ý dưới đây. Tự thay đổi và quan sát kết quả sẽ giúp bạn hiểu bài sâu hơn nhiều so với chỉ đọc code.
- Thay đổi dữ liệu đầu vào và đoán trước kết quả rồi mới chạy để kiểm tra.
- Thêm phần kiểm tra cho trường hợp dữ liệu rỗng hoặc không hợp lệ.
- Đưa phần xử lý vào một hàm riêng và thử với nhiều bộ dữ liệu khác nhau.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
Tất cả thử thách