2016-04-10 8 views
-2

Ich versuche, ein Programm zu schreiben, das eine Liste von Partituren liest und dann einen Buchstabengrad basierend auf der Partitur zuweist. Definieren Sie eine Funktion, um Benutzer zur Eingabe gültiger Bewertungen aufzufordern, bis sie einen Sentinel-Wert von -999 eingeben. Die Funktion sollte eine Liste erstellen und die Liste zurückgeben. Ich hole meinen Wächter-Wert -999 auf meine Liste. Wie verhindere ich das?Python 3- Klasse zuweisen

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

Mögliche Duplikate von [Python 3- weist Noten zu] (http://stackoverflow.com/questions/36558696/python-3-assigns-grades) – Zorgmorduk

Antwort

-1

Das ist, was Sie suchen:

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

Ich habe so wenig Änderungen vorgenommen, wie ich kann. Sie müssen alle Noten bekommen und den Mittelwert nehmen. Das Problem in Ihrem Code war, dass es keinen Wert oder append() zu der Liste zurückgegeben hat.

0

In diesem Codeabschnitt fügen Sie den vom Benutzer eingegebenen Wert nicht zur Liste hinzu ; Sie sind Neudefinitiongrade so ist es keine Liste mehr, sondern eine ganze Zahl:

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

Dies würde nicht in streng, typsichere Sprachen fliegen, aber, hey, es ist Python :)

Um das Problem zu beheben, benennen Sie die Liste um (grades wäre ein intuitiver Name) und verwenden Sie append(), um den Wert grade hinzuzufügen. Dann geben Sie grades, nicht grade zurück, um eine Liste zurück zu bekommen.

+0

Down-Wähler, Pflege zu erklären? Mache ich etwas Dummes? – jDo