python-005Đọc toàn bộ đề miễn phí

Chuẩn hóa họ tên và tạo email sinh viên

Khi sinh viên đăng ký tài khoản tại AI Empire Academy, dữ liệu họ tên người dùng nhập từ bàn phím thường chứa nhiều khoảng trắng thừa ở đầu, cuối và giữa các từ, cũng như viết hoa…

PythonTrung bình25 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

stringsstring methodssplit joindata cleaning

Kiến thức tiên quyết: string indexing, lists, functions.

Nội dung đề bài

Mục tiêu kiến thức

  • Sử dụng các phương thức xử lý chuỗi: .strip(), .split(), .lower(), .capitalize(), ' '.join().
  • Kỹ thuật chuyển đổi ký tự tiếng Việt có dấu sang không dấu để tạo định danh email an toàn.
  • Kiểm tra tính hợp lệ của văn bản đầu vào.

Mô tả bài toán

Khi sinh viên đăng ký tài khoản tại AI Empire Academy, dữ liệu họ tên người dùng nhập từ bàn phím thường chứa nhiều khoảng trắng thừa ở đầu, cuối và giữa các từ, cũng như viết hoa tùy tiện (ví dụ: " trAn mInH nHaT ").

Hệ thống cần chuẩn hóa thông tin này và tự động cấp email sinh viên theo quy định sau:

  • Chuẩn hóa họ tên (full_name):
  • Loại bỏ toàn bộ khoảng trắng thừa.
  • Mỗi từ viết hoa chữ cái đầu tiên, các chữ cái còn lại viết thường.
  • Các từ nối với nhau bằng đúng 1 khoảng trắng duy nhất (ví dụ: "Tran Minh Nhat").
  • Quy tắc sinh email (email):
  • Đổi họ tên đã chuẩn hóa thành tiếng Việt không dấu.
  • Cấu trúc email: <Tên chính><chữ cái đầu của họ và các tên đệm>@<domain>.
  • Toàn bộ ký tự trong email viết thường.
  • Ví dụ: "Tran Minh Nhat" → Tên chính là "nhat", chữ cái đầu của họ và tên đệm là "t", "m" ⇒ email là nhattm@aiempire.edu.vn.
  • Domain mặc định là "aiempire.edu.vn".
  • Ngoại lệ: Nếu raw_name rỗng hoặc chỉ chứa toàn khoảng trắng, hàm phải ném ra ValueError("Ten khong duoc de trong").

Hãy viết hàm normalize_student_info(raw_name: str, domain: str = "aiempire.edu.vn") -> dict[str, str] trả về một dict gồm hai khóa: {"full_name": ..., "email": ...}.

Input

  • raw_name: Chuỗi ký tự str.
  • domain: Chuỗi ký tự str (tùy chọn, mặc định "aiempire.edu.vn").

Output

Trả về dict[str, str] gồm full_name và email.

Ràng buộc

  • Độ dài raw_name từ 0 đến 200 ký tự.
  • Thời gian chạy tối đa: 1000ms.
  • Giới hạn bộ nhớ: 256MB.

Ví dụ 1

Input

`raw_name = "  trAn   mInH   nHaT  "`

Output

{
    "full_name": "Tran Minh Nhat",
    "email": "nhattm@aiempire.edu.vn"
}

Giải thích

Họ tên được làm sạch thành "Tran Minh Nhat". Email gồm tên chính "nhat" + chữ cái đầu họ đệm "t" + "m" = "nhattm@aiempire.edu.vn".

Ví dụ 2

Input

`raw_name = "nguyen van a"`

Output

{
    "full_name": "Nguyen Van A",
    "email": "anv@aiempire.edu.vn"
}
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.