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

Tìm lỗi lệch chỉ số trong mô đun báo cáo shipper

Lớp 11Lậ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

Bộ phận vận hành của TocDo Express viết một chương trình Python theo mô đun (giống bài toán quản lí doanh số đã học) để mỗi ngày in ra 3 shipper giao nhiều đơn nhất (theo thứ tự giảm dần) và 3 shipper giao ít đơn nhất (theo thứ tự tăng dần). Dữ liệu luôn có ít nhất 6 shipper và số đơn của các shipper không trùng nhau.

Chương trình dưới đây có một lỗi khiến phần báo cáo 3 shipper ít đơn nhất chỉ in ra 2 dòng thay vì 3 dòng (lỗi lệch chỉ số ở vòng lặp, tương tự dạng lỗi off-by-one đã được lưu ý khi học hàm GhiDL()):

  • def NhapDL():
  • n = int(input())
  • P = []
  • S = []
  • for i in range(n):
  • line = input()
  • A = line.split(',')
  • P.append(A[0])
  • S.append(int(A[1]))
  • return P, S
  • def Sapxep(A, B):
  • n = len(A)
  • for i in range(1, n):
  • j = i
  • while j > 0 and A[j] < A[j-1]:
  • A[j], A[j-1] = A[j-1], A[j]
  • B[j], B[j-1] = B[j-1], B[j]
  • j = j - 1
  • def GhiDL(P, S):
  • n = len(P)
  • for i in range(n-1, n-4, -1):
  • print(P[i], S[i])
  • for i in range(1, -1, -1):
  • print(P[i], S[i])
  • P, S = NhapDL()
  • Sapxep(S, P)
  • GhiDL(P, S)

Em hãy tìm dòng lệnh gây lỗi và sửa lại chương trình cho đúng, để mô đun GhiDL(P, S) luôn in ra đúng 3 dòng shipper nhiều đơn nhất (giảm dần) và đúng 3 dòng shipper ít đơn nhất (tăng dần).

Định dạng dữ liệu vào: dòng đầu là số nguyên n (số shipper, n từ 6 trở lên); n dòng tiếp theo, mỗi dòng có dạng TenShipper,SoDon.

Định dạng dữ liệu ra: 6 dòng, mỗi dòng gồm tên shipper và số đơn, cách nhau một khoảng trắng.

InputOutput
6
Nguyen Van A,15
Tran Thi B,22
Le Van C,8
Pham Thi D,30
Hoang Van E,5
Vo Thi F,18
D 30
B 22
F 18
A 15
C 8
E 5
#mô đun#off-by-one#sắp xếp chèn#gỡ lỗi#hàm#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