Python 3- Назначить оценку

Я пытаюсь написать программу, которая читает список баллов, а затем назначает буквенную оценку на основе баллов. Определите функцию, которая будет предлагать пользователю вводить действительные оценки, пока они не введут дозорное значение -999. Функция должна создать список и вернуть список. Я продолжаю получать мой часовой -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()

2 ответа

Решение

Вот что вы ищете:

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

Я сделал как можно меньше модификаций. Вы должны получить все оценки и взять среднее. Проблема в вашем коде заключалась в том, что он не возвращал никакого значения или append() к списку.

В этом фрагменте кода вы не добавляете значение, введенное пользователем, в список grade; вы переопределяете grade так что это уже не список, а целое число:

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

Это не будет работать на строгих, безопасных для типов языках, но, эй, это Python:)

Чтобы исправить это, переименуйте список (grades будет интуитивное имя) и использовать append() добавить значение grade к этому. Затем вернитесь gradesне grade чтобы получить список обратно.

Другие вопросы по тегам