cuốn sách gpt4 ai đã làm

python - 弹出索引超出范围 - 作业(列表,for 循环,while 循环)

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 06:43:58 34 4
mua khóa gpt4 Nike

Hiện nay tôi đang làm một bài tập về nhà:

Viết và kiểm tra một hàm sửa đổi_list đó, đưa ra một danh sách các số dấu phẩy động làm tham số, tính giá trị trung bình của các giá trị trong danh sách và loại bỏ tất cả các giá trị lớn hơn giá trị trung bình khỏi danh sách đã cho.

Mã của tôi cho đến nay trông như thế này:

def sửa đổi_list(L):

trung bình = tổng(L) / (len(L))
j=0
cho J trong L:
nếu J>trung bình:
L.pop(J)
khác:
j=j+1

L=[3,12,2,21,2,1,2]

sửa đổi_list(L)

in(L)

Cho đến nay tôi đã chuyển danh sách cho hàm sửa đổi_list, rồi tính giá trị trung bình của danh sách. Sau đó tôi có một for Vòng lặp lấy từng giá trị trong danh sách và so sánh nó với giá trị trung bình. Nếu các giá trị trong danh sách lớn hơn mức trung bình, hãy chuyển L.pop(J) Xóa nó. Vấn đề duy nhất là lỗi của tôi, đó là:

Traceback (most recent call last):
Tệp "/Users/nathan/CP/test/src/test.py", dòng 22, trong
sửa đổi_list(L)
Tệp "/Users/nathan/CP/test/src/test.py", dòng 17, trong Modify_list
L.pop(J)
IndexError: bật chỉ mục ra khỏi phạm vi

tôi có nên thử không while vòng lặp thay vì for xe đạp?

Tôi đã tạo một vòng lặp while và nó hoạt động tốt...mặc dù L.remove(i) cũng hoạt động tốt. Tôi vẫn không hiểu tại sao L.remove(i) lại là một ý tưởng tồi. Đây là mã mới của tôi:

1 độ chính xác chính (L):

2 trung bình = tổng(L)/(len(L))

3i=0

4 và tôi

5 Nếu L[i]>trung bình:

6 L.pop(i)

7 người khác:

8 tôi=i+1

9

10 L=[3,12,2,21,2,1,2]

11 Chính (trái)

12 bản in(L)

34 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress