Hãy chỉnh sửa lại chương trình trên nêu bổ sung thêm điều kiện sau vào nhiệm vụ: Trong tệp kết

Hãy chỉnh sửa lại chương trình trên nêu bổ sung thêm điều kiện sau vào nhiệm vụ: Trong tệp kết quả đầu ra, thứ tự các vận động viên được ghi theo thứ tự giảm dần của điểm đánh giá.

Trả lời

def nhapDL(finp):

    f = open(finp)

    A = []

    B = []

    for line in f:

        s = line.split()

        A.append(s[0])

        temp = s[1:len(s)]

        temp = [float(x) for x in temp]

        B.append(temp)

    f.close()

    return A, B

def diem_gk(d):

    diem = sum(d) + d[0] + d[len(d) - 1]

    diem = diem / (len(d) + 2)

    return round(diem, 2)

def xuly(B):

    kq = []

    for i in range(len(B)):

        diem = diem_gk(B[i])

        kq.append(diem)

    return kq

def ghiDL(fout, A, B):

    f = open(fout, "w")

    A, B = zip(*sorted(zip(A, B), key=lambda x: x[1], reverse=True))

    for i in range(len(A)):

        print(A[i], B[i], file=f)

    f.close()

finp = "seagames.inp"

fout = "ketqua.out"

DS, Diem = nhapDL(finp)

Kq = xuly(Diem)

ghiDL(fout, DS, Kq)