Các lệnh sau có sinh ra lỗi chương trình không? Nếu có thì mã lỗi là gì? Hãy nêu cách sửa lỗi đó. >>>A=[1, 3, 5, 10, 0] >>>for k in range(1,len(A) + 1): print(A[k])
Có, chương trình này có sinh ra lỗi khi chạy.
Mã lỗi
Khi vòng lặp chạy đến giá trị cuối cùng của range, chương trình sẽ báo lỗi: IndexError: list index out of range.
Nguyên nhân gây ra lỗi
- Dãy A có 5 phần tử, nên len(A) = 5.
- Hàm range(1, len(A) + 1) sẽ tạo ra các giá trị cho k từ 1 đến 5 (bao gồm: 1, 2, 3, 4, 5)
- Trong Python, chỉ số (index) của danh sách (list) bắt đầu từ 0 đến len(A) - 1 (tức là từ 0 đến 4)
- Khi k = 5, câu lệnh print(A[k]) trở thành print(A[5]), lúc này chỉ số 5 nằm ngoài phạm vi cho phép của danh sách A.
Cách sửa lỗi: bạn có thể sửa lại hàm range() theo các cách sau: Nếu muốn in các phần tử từ vị trí chỉ số 1 đến hết danh sách (bỏ qua phần tử đầu tiên A[0])
Sửa range(1, len(A) + 1) thành range(1, len(A)) để k chỉ chạy từ 1 đến 4.