C7-07 · Mật khẩu đủ mạnh
Xem dạng PDF
Gửi bài giải
Điểm:
1,00
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
Python
Nguồn: Bài C7-07, mục 7.10, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.
Đề
Theo một quy định (giả định), mật khẩu đủ mạnh khi thỏa tất cả các điều kiện:
- dài ít nhất ~8~ ký tự;
- không có khoảng trắng (dấu cách);
- có ít nhất một chữ hoa
A–Z; - có ít nhất một chữ thường
a–z; - có ít nhất một chữ số
0–9; - có ít nhất một ký tự khác — không phải chữ cái, không phải chữ số (ví dụ
@,#,!,.). Dấu cách không được tính là ký tự khác vì đã bị cấm ở điều kiện 2.
Kiểm tra ~T~ mật khẩu; với mỗi mật khẩu in YES nếu đủ mạnh, ngược lại in NO.
Dữ liệu vào
- Dòng đầu chứa số nguyên ~T~.
- ~T~ dòng tiếp theo, mỗi dòng là một mật khẩu: mọi ký tự trên dòng, kể cả dấu cách ở đầu hoặc cuối dòng, đều thuộc mật khẩu.
Kết quả
~T~ dòng, dòng thứ ~i~ là YES hoặc NO cho mật khẩu thứ ~i~.
Ràng buộc
- ~1 \le T \le 100~.
- Mỗi mật khẩu dài từ ~1~ đến ~200~ ký tự ASCII in được (chữ, số, dấu câu, dấu cách).
Gợi ý
Duyệt từng ký tự với isupper(), islower(), isdigit() (mục 7.2) và bật "cờ" cho từng loại như Ví dụ 7.3. Cờ của mỗi mật khẩu phải khởi tạo lại trong thân vòng lặp ~T~ (mẫu (5), Phụ lục D). Đừng strip() mật khẩu: dấu cách đầu dòng là một phần của mật khẩu.
Ví dụ 1
Dữ liệu vào:
2
Lan@2005
Matkhau123
Kết quả:
YES
NO
Ví dụ 2
Dữ liệu vào:
3
Abc@1234
Abc@123
Abc 1234
Kết quả:
YES
NO
NO
Giải thích ví dụ
- Ví dụ 1:
Lan@2005dài 8, có chữ hoaL, chữ thườnga,n, chữ số và ký tự khác@→YES.Matkhau123thiếu ký tự khác →NO. - Ví dụ 2:
Abc@1234dài đúng 8 và đủ bốn loại →YES;Abc@123chỉ dài 7 →NO;Abc 1234dài 8 nhưng có dấu cách (dấu cách không được tính là ký tự khác) →NO.
Nguồn trong sách: bài tập C7-07 (mục 7.10) · Mức: (**)
Đang tải...