提示“列表索引超出范围”怎么解决?


n = int(input("请输入科目数量:"))
numbers = []
credits = []
weight = []
fcredits=[]
numbers = input('请输入一组成绩(以空格隔开,按回车结束):').split(' ')
credits = input('请输入分数对应科目的学分(以空格隔开,按回车结束):').split(' ')
i = int(0)
c = float(0)
b = float(0)
a = int(0)


for credit in credits:
    credit = float(credit)
    for fcredit in fcredits:
        fcredit = credit
        break
    c = c+credit
    break

while i<n:
    weight[i]=fcredits[i]/c
    i+1
    break

for a in range(n):
    b=b+float(numbers[a])
    break

print(b)

错误提示:


请输入科目数量:3
请输入一组成绩(以空格隔开,按回车结束):77 88 99
请输入分数对应科目的学分(以空格隔开,按回车结束):3 4 5
Traceback (most recent call last):
  File "F:\pythonProject\加权计算器.py", line 23, in <module>
    weight[i]=fcredits[i]/c
IndexError: list index out of range

你的代码问题很多啊,我猜你想写的代码是这样的:
主要问题是for ... in ... 这种循环格式没弄清,它是不会遍历一个空数组的,你必须给数组初始化值,才能对数组的元素修改,否则你访问一个空数组的任何一个index都会报错。数组初始化可以通过list(range(n))产生一个n个元素的数组,然后进行修改。
还有一点,for in循环无法修改数组中的值,那只是一个临时变量,是数组中元素的备份(除非数组内是列表,字典这种可变对象),只能通过数组[下标]的方式修改

n = int(input("请输入科目数量:"))
numbers = []
credits = []
weight = []
fcredits=[]
numbers = input('请输入一组成绩(以空格隔开,按回车结束):').split(' ')
credits = input('请输入分数对应科目的学分(以空格隔开,按回车结束):').split(' ')
i = int(0)
c = float(0)
b = float(0)
a = int(0)
 
for credit in credits:
    credit = float(credit)
    fcredits.append(credit)
    c = c+credit
    break
while i<n:
    weight[i]=fcredits[i]/c
    i+1
    break
for a in range(n):
    b=b+float(numbers[a])
    break
print(b)

哥,我把你的复制 list assignment index out of range 的问题依然没解决啊

weight 你定义的空列表 先添加数据 才能有对应的weight[i] 你这种用法适合字典