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] 你这种用法适合字典