btvn.vn
Tìm kiếm Đăng nhập

Tra điểm theo số thứ tự nhập vào

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Nhiệm vụ và quy ước

Tiếp tục dùng dãy điểm giả `[8.0, 7.0, 9.0]`. Người dùng gọi đầu điểm **thứ nhất, thứ hai, thứ ba**, còn Python lưu ở chỉ số **0, 1, 2**. Vì vậy, đầu điểm thứ `n` nằm ở `diem[n - 1]` **chỉ khi** `1 <= n <= len(diem)`. Dữ liệu thử: nhập 2 phải được `7.0`; nhập 0 hoặc 4 phải được báo sai, không đọc phần tử.

Kiểm rồi mới đổi chỉ số

```python def tra_diem(diem, so_thu_tu): if not 1 <= so_thu_tu <= len(diem): return None return diem[so_thu_tu - 1] diem = [8.0, 7.0, 9.0] for n in [2, 0, 4]: print(n, tra_diem(diem, n)) ``` Lưu vào `tra_diem.py` rồi chạy: ba dòng kết quả là `2 7.0`, `0 None`, `4 None`. `None` ở đây là dấu hiệu không có đầu điểm hợp lệ, **không phải điểm số 0**. Với danh sách điểm có thể chứa 0, việc kiểm `ket_qua is None` giúp phân biệt rõ hai trường hợp. Không dùng `diem[-1]` cho số thứ tự 0, vì Python sẽ trả **điểm cuối**, trái quy ước của người dùng.

Hỏi lại đến khi có số thứ tự hợp lệ

Đặt đoạn này sau định nghĩa `tra_diem` và `diem` trong cùng tệp: ```python while True: try: n = int(input("Đầu điểm thứ mấy? ")) except ValueError: print("Cần nhập số nguyên.") continue ket_qua = tra_diem(diem, n) if ket_qua is None: print("Số thứ tự phải từ 1 đến", len(diem)) continue print("Điểm:", ket_qua) break ``` Thử nhập `0`, `4`, `hai` rồi `2`: ba lượt đầu được yêu cầu nhập lại, lượt cuối in `Điểm: 7.0`. Nếu một điểm hợp lệ bằng 0, điều kiện `is None` vẫn không nhầm điểm ấy với số thứ tự sai.

Bài luyện

Với `diem=[8.0,7.0,9.0]`, đầu điểm thứ ba được đọc bằng biểu thức nào?
Chọn một đáp án

Bài luyện

Nếu người dùng nhập số thứ tự 0, vì sao không lấy ngay `diem[0-1]`?
Chọn một đáp án

Bài luyện

Hàm trả `None` khi số thứ tự sai. Cách kiểm nào phân biệt được `None` với điểm hợp lệ bằng 0?
Chọn một đáp án

Đang học