Câu hỏi:
13/07/2024 526Trong 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:
Quảng cáo
Trả lời:
# Đọ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")
Hot: Học hè online Toán, Văn, Anh...lớp 1-12 tại Vietjack với hơn 1 triệu bài tập có đáp án. Học ngay
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Lời giải
def is_prime(num):
"""Kiểm tra xem một số có phải là số nguyên tố hay không."""
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def print_prime_numbers(n):
"""In ra n số nguyên tố đầu tiên."""
count = 0
num = 2
while count < n:
if is_prime(num):
print(num)
count += 1
num += 1
# Số nguyên n cần in ra dãy số nguyên tố đầu tiên
n = int(input())
# Gọi hàm in ra dãy số nguyên tố
print_prime_numbers(n)
Lời giả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)
Lời giải
Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.
Bộ 4 đề thi cuối học kì 2 Tin 11 Kết nối tri thức có đáp án (Đề 1)
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 25 có đáp án
Bộ 4 đề thi cuối học kì 2 Tin 11 Kết nối tri thức có đáp án (Đề 2)
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 26 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 27 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 28 có đáp án
15 câu Trắc nghiệm Tin học 11 Cánh diều Bài 1: Một số thao tác chỉnh sửa ảnh và hỗ trợ chỉnh sửa ảnh có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 24 có đáp án
Hãy Đăng nhập hoặc Tạo tài khoản để gửi bình luận