#Author: Zian Lin
#Date: March 22th 2016
#Purpose: Calculating your GPA.
#Variables
grades = []
finalgpa = []
number = 1
rank = 0
counter = 0
boolean = 0
lower = [0, 60, 64, 67, 70, 74, 77, 80, 84, 87, 90, 94]
upper = [59, 63, 66, 69, 73, 76, 79, 83, 86, 89, 93, 100]
gpa = [0, 0.7, 1, 1.3, 1.7, 2.0, 2.3, 2.7, 3, 3.3, 3.7, 4]
start = str(input("Do you want to calculate your GPA?"))
#Collects all the grades
if start == "Yes" or "yes":
while number <= 7:
answer = input("What is your grade for class " + str(number) + "?")
if int(answer) > 100 or int(answer) < 0:
print("Please input a valid number.")
else:
grades.append(answer)
number = number + 1
#Displays grades
print("These the grades you've inputted.")
print(str(grades[:]))
#Convert grades to GPA
if counter != 7:
if int(grades[counter]) >= int(lower[rank]) and int(grades[counter]) <= int(upper[rank]):
#Scroll through
finalgpa.append(gpa[counter])
counter = counter + 1
boolean = 1
if boolean == 0:
rank = rank + 1
#Average all the GPAs
def averager(a, b, c, d, e, f, g):
return (a+b+c+d+e+f+g)/7
#Print final GPA
result = averager(finalgpa[0], finalgpa[1], finalgpa[2], finalgpa[3], finalgpa[4], finalgpa[5], finalgpa[6])
print("Your GPA is " + str(result) + "!")
对于我的计算机课,我不得不用Python制作一些东西,所以我决定制作一个GPA计算器。 #Print最终GPA之上的所有内容理论上都可以正常工作,但是当我尝试平均最终GPA时,它会给我这个错误:
追踪(最近一次通话): 文件“python”,第47行,in IndexError:列表索引超出范围
为什么会这样?
答案 0 :(得分:0)
您的if counter != 7
阻止错误。
finalgpa.append(gpa[counter])
错了。您希望gpa[rank]
不是计数器,因为计数器是成绩而非gpa的索引,以下是修复:
#Convert grades to GPA
for grade in grades:
for rank in range(0, len(gpa)):
if grade >= int(lower[rank]) and grade <= int(upper[rank]):
finalgpa.append(gpa[rank])
break
更简单的平均方法是接受一个数组,比如finalgpa
,然后是sum(finalgpa)/len(gpa)
。