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
чтобы получить список обратно.