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:
Sách "Lập trình cơ sở với Python"
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:

  1. dài ít nhất ~8~ ký tự;
  2. không có khoảng trắng (dấu cách);
  3. có ít nhất một chữ hoa A–Z;
  4. có ít nhất một chữ thường a–z;
  5. có ít nhất một chữ số 0–9;
  6. 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@2005 dài 8, có chữ hoa L, chữ thường a, n, chữ số và ký tự khác @ → YES. Matkhau123 thiếu ký tự khác → NO.
  • Ví dụ 2: Abc@1234 dài đúng 8 và đủ bốn loại → YES; Abc@123 chỉ dài 7 → NO; Abc 1234 dà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...