Môn Tin họcQuản lý học tập Tin học

Tìm và sửa lỗi: Kiểm tra ngày sinh hợp lệ khi đăng ký thẻ thư viện

Lớp 10Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm · 1 lượt giáo viên giao cho lớp

Chương trình dưới đây được bạn Lan viết dựa theo mẫu date.py (Nhiệm vụ 3, Bài 32) để kiểm tra ngày sinh nhập vào có hợp lệ hay không, có xét năm nhuận. Tuy nhiên khi chạy thử với dữ liệu 31-04-2023 chương trình lại báo hợp lệ (sai, vì tháng 4 chỉ có 30 ngày), còn khi thử với 05-12-2023 chương trình bị lỗi và dừng đột ngột.

Mã nguồn của bạn Lan (đã đánh số dòng):

  • thang = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  • def nhuan(year):
  •     return year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)
  • date = input()
  • tg = date.split("-")
  • day, month, year = int(tg[0]), int(tg[1]), int(tg[2])
  • if nhuan(year):
  •     thang[1] = 29
  • else:
  •     thang[1] = 28
  • if year > 0 and 1 <= month <= 12 and 1 <= day <= thang[month]:
  •     print(day, "-", month, "-", year, "là hợp lệ")
  • else:
  •     print("Bộ dữ liệu đã nhập không hợp lệ")

Yêu cầu: Hãy chỉ ra dòng bị lỗi, giải thích tại sao lỗi này khiến chương trình cho kết quả sai (hoặc bị lỗi dừng đột ngột), rồi viết lại chương trình đã sửa đúng để hoạt động chính xác như mẫu date.py gốc.

Định dạng vào: một dòng chứa ngày sinh dạng dd-mm-yyyy.

Định dạng ra: in ra day - month - year là hợp lệ nếu hợp lệ, ngược lại in Bộ dữ liệu đã nhập không hợp lệ.

InputOutputGiải thích
08-02-20218 - 2 - 2021 là hợp lệ2021 không nhuận, tháng 2 có 28 ngày
31-04-2023Bộ dữ liệu đã nhập không hợp lệTháng 4 chỉ có 30 ngày, code lỗi từng báo sai là hợp lệ
29-02-202429 - 2 - 2024 là hợp lệ2024 là năm nhuận (chia hết cho 4, không chia hết cho 100)
05-12-20235 - 12 - 2023 là hợp lệCode lỗi từng bị dừng do lỗi chỉ số khi tháng 12
#xâu kí tự#rẽ nhánh#danh sách#lỗi lệch 1 đơn vị#kiểm thử#gỡ lỗi#category:tu_duy_phan_bien#difficulty:analyzing

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài