GPA计算器只给出答案1.29?

时间:2017-02-25 03:41:32

标签: python traceback

#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:列表索引超出范围

为什么会这样?

1 个答案:

答案 0 :(得分:0)

您的if counter != 7阻止错误。

  1. 首先,您要迭代每个等级
  2. 您还希望迭代每个等级
  3. finalgpa.append(gpa[counter])错了。您希望gpa[rank]不是计数器,因为计数器是成绩而非gpa的索引,
  4. 以下是修复:

    #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)

相关问题