2016-04-10 4 views
-2

Я пытаюсь написать программу, которая читает список баллов, а затем присваивает оценку класса на основе оценки. Определите функцию, чтобы пригласить пользователя ввести действительные баллы, пока они не введут значение дозорного -999. Функция должна создать список и вернуть список. Я продолжаю получать в своем списке значение моего стража -999. Как я могу предотвратить это?Python 3- Назначить оценку

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

Возможный дубликат [Python 3- присваивает оценки] (http://stackoverflow.com/questions/36558696/python-3-assigns-grades) – Zorgmorduk

ответ

-1

Это то, что вы ищете:

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

0

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

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

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

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

+0

Даун-избиратель, как объяснить? Я делаю что-то глупое? – jDo