2016-04-10 9 views
-2

スコアのリストを読み込んでスコアに基づいて文字グレードを割り当てるプログラムを作成しようとしています。センチネル値-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 - assigns grades]の重複している可能性があります(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 

これはちょっと、それはPythonの、厳格な、タイプセーフな言語で飛ぶが、ないだろう:)

これを修正するには、リストの名前を変更し(gradesは直感的な名前になります)、append()を使用してgradeという値を追加します。その後、gradesを返し、リストを取得するにはgradeではありません。

+0

ダウン投票者、説明に注意してください?私は何か愚かなことをしていますか? – jDo