Python 3- 分配成绩

Python 3- Assign grade

我正在尝试编写一个程序来读取分数列表,然后根据分数分配字母等级。定义一个函数来提示用户输入有效分数,直到他们输入标记值 -999。该函数应该创建一个列表和 return 列表。我一直在将我的标记值 -999 放入我的列表中。我该如何防止这种情况?

def main():
   grade = getScore()
   abcGrade = getGrade(grade)
   print(grade, "is an", abcGrade)


def getScore():
   grade = []
   while grade != -999:
      grade = int(input("Enter grades (-999 ends): "))
   return grade

def getGrade(grade):
   best = 100
   if grade >= best - 10:
      return 'A'
   elif grade >=  best - 20:
      return 'B'
   elif grade >= best - 30:
      return 'C'
   elif grade >= best - 40:
      return 'D'
   else:
      return 'F'

main()

这就是您要找的:

from statistics import mean

def main():
   grades = getScores()
   grade = mean(grades)
   abcGrade = getGrade(grade)
   print(grade, "is an", abcGrade)


def getScores():
   grades = []
   while True:
      grade = int(input("Enter grades (-999 ends): "))
      if grade == -999: return grades
      grades.append(grade)

def getGrade(grade):
   best = 100
   if grade >= best - 10:
      return 'A'
   elif grade >=  best - 20:
      return 'B'
   elif grade >= best - 30:
      return 'C'
   elif grade >= best - 40:
      return 'D'
   else:
      return 'F'

main()

我已经尽可能少地修改了。您必须获得所有成绩并取平均值。您的代码中的问题是它没有 return 任何值或 append() 到列表中。

在这段代码中,您没有将用户输入的值添加到列表中grade;你正在重新定义 grade 所以它不再是一个列表而是一个整数:

def getScore():
   grade = []
   while grade != -999:
      grade = int(input("Enter grades (-999 ends): "))
   return grade

这不会在严格的、类型安全的语言中运行,但是,嘿,它是 python :)

要修复它,重命名列表(grades 将是一个直观的名称)并使用 append() 添加 grade 的值。然后,returngrades,而不是grade得到一个列表。