Giáo viên yêu cầu học sinh giải bài toán sau bằng ngôn ngữ lập trình Python: Một mật khẩu là một chuỗi kí tự. Mật khẩu được gọi là mạnh nếu có ít nhất một chữ cái thường, ít nhất một chữ cái in hoa, ít nhất một chữ số. Hãy viết chương trình kiểm tra một mật khẩu có phải là mạnh hay không.
Một bạn học sinh đã viết chương trình để giải quyết bài toán trên như sau:

Sau đây là nhận xét của các bạn trong lớp về chương trình trên:
Lời giải chi tiết
Hãy phân tích các nhận xét một cách
Nhận xét 1: Vòng lặp trên dòng 5 cho phép duyệt qua lần lượt từng kí tự trong chuỗi matkhau.
- Nhận xét này đúng. Vòng lặp for c in matkhau: sẽ duyệt qua từng ký tự trong chuỗi matkhau.
Nhận xét 2: Chương trình đã sử dụng kỹ thuật tìm kiếm và đếm số lượng các kí tự thuộc nhóm tương ứng.
- Nhận xét này đúng. Chương trình sử dụng các biến chuthuong, chuhoa, và chuso để đếm số lượng ký tự thường, ký tự hoa và chữ số.
Nhận xét 3: Khi chạy chương trình và nhập chuỗi “Fit@!@”, chương trình sẽ hiển thị kết quả là: Đây KHÔNG là mật khẩu mạnh.
- Nhận xét này đúng. Chuỗi "Fit@!@" có cả ký tự in hoa (F), ký tự thường (i, t), nhưng không có ký tự số, do đó không thoả điều kiện của mật khẩu mạnh.
Nhận xét 4: Cần thay lệnh else trong dòng 8 bởi lệnh elif c>= ‘0’ and c< = ‘9’ : chuso +=1 thì chương trình sẽ đúng.
- Nhận xét này sai. Thực tế, lệnh else hiện tại mặc định tăng chuso cho bất kỳ ký tự nào không thuộc nhóm chữ cái thường hay chữ cái in hoa, điều này không đảm bảo chính xác. Nên thay else bằng elif c>= ‘0’ and c< = ‘9’ : chuso +=1 để chỉ tăng chuso khi gặp chữ số.
Chú ý khi giải
chuthuong >= 1, chuhoa >= 1, chuso >= 1.else thành elif c>= ‘0’ and c< = ‘9’ : chuso +=1 để chỉ đếm khi gặp ký tự là số.