Quay lại KHỞI ĐỘNG ở Bài F11, tới kì thi tuyển học sinh giỏi, cô giáo cần tìm năm em học sinh có điểm
KHỞI ĐỘNG
Câu 1: Quay lại KHỞI ĐỘNG ở Bài F11, tới kì thi tuyển học sinh giỏi, cô giáo cần tìm năm em học sinh có điểm cao nhất trong bảng điểm môn Tin học của lớp 10A1 để chọn vào đội truyển học sinh giỏi nên đã yêu cầu bạn An sử lại chương trình đã viết để giải quyết yêu cầu này của cô giáo. Em hãy tìm hiểu và hướng dẫn An giải quyết vấn đề trên.
1. Các trường hợp cần sử dụng kiểu dữ liệu danh sách:
Kiểu dữ liệu danh sách (list) rất hữu ích khi bạn cần lưu trữ một tập hợp các phần tử có cùng hoặc khác kiểu dữ liệu. Dưới đây là một số trường hợp cụ thể:
Lưu trữ điểm số của học sinh: Như trong ví dụ của bạn, danh sách có thể được sử dụng để lưu trữ điểm số của tất cả học sinh trong một lớp.
Lưu trữ danh sách tên: Danh sách có thể được sử dụng để lưu trữ danh sách tên của các thành viên trong một nhóm, danh sách tên sản phẩm, v.v.
Lưu trữ kết quả khảo sát: Khi thực hiện một cuộc khảo sát, bạn có thể sử dụng danh sách để lưu trữ các câu trả lời của người tham gia.
Lưu trữ dữ liệu từ tệp tin: Khi đọc dữ liệu từ một tệp tin, bạn có thể sử dụng danh sách để lưu trữ các dòng hoặc các phần tử trong tệp tin.
Lưu trữ tọa độ: Bạn có thể sử dụng danh sách để lưu trữ tọa độ của các điểm trên mặt phẳng hoặc trong không gian.
Lưu trữ danh sách các sản phẩm trong giỏ hàng: trong lập trình ứng dụng bán hàng.
Lưu trữ danh sách các bài hát trong danh sách phát nhạc: trong ứng dụng nghe nhạc.
2. Hướng dẫn An giải quyết vấn đề tìm 5 học sinh có điểm cao nhất:
Để tìm 5 học sinh có điểm cao nhất, bạn An có thể sử dụng kết hợp kiểu dữ liệu danh sách và các phương thức sắp xếp của danh sách. Dưới đây là một cách thực hiện:
def tim_5_diem_cao_nhat(danh_sach_diem, danh_sach_ten):
"""Tìm 5 học sinh có điểm cao nhất."""
# Kết hợp tên và điểm thành một danh sách các tuple
danh_sach_hoc_sinh = list(zip(danh_sach_diem, danh_sach_ten))
# Sắp xếp danh sách theo điểm số giảm dần
danh_sach_hoc_sinh.sort(reverse=True)
# Lấy 5 học sinh đầu tiên
top_5 = danh_sach_hoc_sinh[:5]
return top_5
# Dữ liệu ví dụ
danh_sach_ten = ["An", "Bình", "Cúc", "Dũng", "Đào", "Giang", "Huệ", "Khánh"]
danh_sach_diem = [8, 9, 7, 10, 6, 9.5, 8.5, 7.5]
# Tìm 5 học sinh có điểm cao nhất
top_5 = tim_5_diem_cao_nhat(danh_sach_diem, danh_sach_ten)
# In kết quả
print("5 học sinh có điểm cao nhất:")
for diem, ten in top_5:
print(f"{ten}: {diem}")
*Giải thích:
- tim_5_diem_cao_nhat(danh_sach_diem, danh_sach_ten)
: Hàm này nhận vào hai danh sách: danh_sach_diem
(điểm số) và danh_sach_ten
(tên học sinh).
- danh_sach_hoc_sinh = list(zip(danh_sach_diem, danh_sach_ten))
: Kết hợp hai danh sách thành một danh sách các tuple, mỗi tuple chứa một điểm số và tên học sinh tương ứng.
- danh_sach_hoc_sinh.sort(reverse=True)
: Sắp xếp danh sách theo điểm số giảm dần.
- top_5 = danh_sach_hoc_sinh[:5]
: Lấy 5 tuple đầu tiên từ danh sách đã sắp xếp.
*In kết quả: In tên và điểm số của 5 học sinh có điểm cao nhất.
*Lưu ý:
+ Đảm bảo rằng hai danh sách danh_sach_diem
và danh_sach_ten
có cùng số lượng phần tử.
+ E, có thể điều chỉnh số lượng học sinh cần tìm bằng cách thay đổi giá trị 5
trong top_5 = danh_sach_hoc_sinh[:5]
.
Bình luận