Trong một kì thi Tin học trẻ, mỗi học sinh sẽ phải làm 3 bài thi. Với mỗi bài, nêu học sinh làm sẽ được ban giám khảo chấm và cho điểm, nếu không làm thì sẽ không tính điểm. Sau khi thi, dữ liệu điểm thi của học sinh sẽ được lưu trong một tệp văn bản và gửi về ban tổ chức. Mẫu một tệp điểm thi có dạng sau:
Quy định ghi trong tệp trên như sau:
- Mỗi dòng sẽ bắt đầu bằng số báo danh của thí sinh, tiếp theo là ba giá trị điểm tương ứng với ba bài thì.
- Điểm thi sẽ là một số tự nhiên từ 0 đến 20.
- Nếu học sinh không làm thì bài đó ghi -1.
Em có nhiệm vụ tính toán tổng só điểm thi của các bạn học sinh và đưa dữ liệu ra tệp ketqua.out là danh sách ba bạn có tổng điểm cao nhất được sắp xếp giảm dần từ trên xuống đưới. Khuôn dạng dữ liệu đưa ra bao gồm: số báo danh, các điểm thi từng bài và cuối cùng là tổng điểm cả ba bài.
Ví dụ với dữ liệu trên thì kết quả như sau:
Bằng cách nhấp vào Đăng nhập, bạn đồng ý Chính sách bảo mật và Điều khoản sử dụng của chúng tôi. Nếu đây không phải máy tính của bạn, để đảm bảo an toàn, hãy sử dụng Cửa sổ riêng tư (Tab ẩn danh) để đăng nhập (New Private Window / New Incognito Window).
# Đọc dữ liệu từ tệp điểm thi
with open("diemthi.inp", "r") as file:
data = file.readlines()
# Tạo danh sách lưu thông tin điểm thi của các thí sinh
scores = []
for line in data:
line = line.strip().split() # Tách dữ liệu trên mỗi dòng thành các từ
sbd = line[0] # Lấy số báo danh của thí sinh
diem1 = int(line[1]) # Lấy điểm bài 1
diem2 = int(line[2]) # Lấy điểm bài 2
diem3 = int(line[3]) # Lấy điểm bài 3
tong_diem = diem1 + diem2 + diem3 # Tính tổng điểm
scores.append((sbd, diem1, diem2, diem3, tong_diem)) # Thêm thông tin vào danh sách
# Sắp xếp danh sách giảm dần theo tổng điểm
scores.sort(key=lambda x: x[4], reverse=True)
# Ghi kết quả vào tệp ketqua.out
with open("ketqua.out", "w") as file:
for score in scores:
sbd = score[0]
diem1 = score[1]
diem2 = score[2]
diem3 = score[3]
tong_diem = score[4]
file.write(f"{sbd}\t{diem1}\t{diem2}\t{diem3}\t{tong_diem}\n")
Tham gia Cộng đồng Lazi trên các mạng xã hội | |
Fanpage: | https://www.fb.com/lazi.vn |
Group: | https://www.fb.com/groups/lazi.vn |
Kênh FB: | https://m.me/j/AbY8WMG2VhCvgIcB |
LaziGo: | https://go.lazi.vn/join/lazigo |
Discord: | https://discord.gg/4vkBe6wJuU |
Youtube: | https://www.youtube.com/@lazi-vn |
Tiktok: | https://www.tiktok.com/@lazi.vn |
Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi
Vui | Buồn | Bình thường |