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

Chuỗi trận thua liên tiếp của đội bóng rổ trường

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 · 5 test case chấm tự động · 4 tiêu chí chấm

Đội bóng rổ của trường thi đấu n trận trong một mùa giải. Kết quả mỗi trận được ghi lại bằng số 1 (thắng) hoặc 0 (thua), theo đúng thứ tự thời gian thi đấu. Huấn luyện viên muốn có chương trình cảnh báo ngay khi đội có 3 trận thua liên tiếp đầu tiên trong mùa giải để kịp thời điều chỉnh chiến thuật.

Một bạn học sinh đã viết chương trình sau (mô phỏng cách tìm mẫu 3 số liên tiếp đã học ở bài này), nhưng khi thầy giáo kiểm thử với một số bộ dữ liệu thì chương trình báo "Khong phat hien chuoi thua lien tiep" dù thực tế đội có 3 trận thua liên tiếp ở cuối mùa giải:

  • n = int(input())
  • A = []
  • for i in range(n):
  •     x = int(input())
  •     A.append(x)
  • i = 0
  • pkq = -1
  • while i < len(A) - 3 and pkq == -1:
  •     if A[i] == 0 and A[i+1] == 0 and A[i+2] == 0:
  •         pkq = i
  •     else:
  •         i = i + 1
  • if pkq >= 0:
  •     print("Phat hien chuoi thua tai vi tri", pkq)
  • else:
  •     print("Khong phat hien chuoi thua lien tiep")

Hãy chỉ ra chỗ sai trong đoạn chương trình trên (liên quan đến điều kiện của vòng lặp while), giải thích vì sao nó có thể bỏ sót trường hợp 3 trận thua liên tiếp nằm ở cuối danh sách kết quả, rồi viết lại chương trình hoàn chỉnh, sửa đúng điều kiện để chạy chính xác với mọi bộ dữ liệu, kể cả khi chuỗi thua nằm ở cuối cùng.

Định dạng dữ liệu vào: Dòng đầu là số nguyên n (số trận đấu). n dòng tiếp theo, mỗi dòng là một số 0 hoặc 1 theo đúng thứ tự thi đấu.

Định dạng dữ liệu ra: In ra vị trí (đánh số từ 0) của trận đầu tiên trong chuỗi 3 trận thua liên tiếp đầu tiên tìm được, theo đúng mẫu "Phat hien chuoi thua tai vi tri <vị trí>"; nếu không có, in "Khong phat hien chuoi thua lien tiep".

InputOutputGiải thích
7
1
1
0
0
0
1
1
Phat hien chuoi thua tai vi tri 2Ba số 0 liên tiếp bắt đầu từ chỉ số 2
8
1
1
1
1
1
0
0
0
Phat hien chuoi thua tai vi tri 5Chuỗi thua nằm đúng ở 3 vị trí cuối cùng - đây là trường hợp code lỗi bỏ sót
#while#lỗi biên#off-by-one#toán tử in#tìm kiếm mẫu#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