2016-11-23 5 views
0

私は自分自身でPythonを教えようとしています。これはcodeacademyのコースから始まり、これまでは大丈夫です。しかし、私は学生が教師になる7/9につかまりました。私はこの問題について話し合うスレッドを見つけることができませんでしたが、もし私が逃した場合は、私に教えてください。python codeacademy手紙を送って

私はこの練習を正常に完了しましたが、このコードに問題があることがわかりました。 repl.itで以下のコードを使って遊んだとき、get_average(student)は正しい値を返します。私はちょうどちょっと周りの成績を変更してこれをテストしましたが、get_letter_grade(スコア)はすべての生徒に "A"を返します。私は許可された番号の範囲(下記参照)によってより具体的にしようとしましたが、私は同じ問題を抱えています。

lloyd = { 
     "name": "Lloyd", 
     "homework": [90.0, 97.0, 75.0, 92.0], 
     "quizzes": [88.0, 40.0, 94.0], 
     "tests": [75.0, 90.0] 
    } 
alice = { 
     "name": "Alice", 
     "homework": [100.0, 92.0, 98.0, 100.0], 
     "quizzes": [82.0, 83.0, 91.0], 
     "tests": [89.0, 97.0] 
    } 
tyler = { 
     "name": "Tyler", 
     "homework": [0.0, 87.0, 75.0, 22.0], 
     "quizzes": [0.0, 75.0, 78.0], 
     "tests": [100.0, 100.0] 
    } 

def average(numbers): 
     total = sum(numbers) 
     total = float(total)/len(numbers) 
     return total 

def get_average(student): 
     homework = average(student["homework"]) 
     quizzes = average(student["quizzes"]) 
     tests = average(student["tests"]) 
     studentaverage = (homework * .1 + quizzes * .3 + tests *.6) 
     return studentaverage 

def get_letter_grade(score): 
    if score >= 90: 
     return "A" 
    elif score >= 80: 
     return "B" 
    elif score >= 70: 
     return "C" 
    elif score >= 60: 
     return "D" 
    else: 
     return "F" 

私も(私は間違った方法を考えることができ、私はこれで非常に新しいんだ)制限/それをより具体的にするために少し機能(スコア)get_letter_gradeを変更しようとした以下のように:

def get_letter_grade(score): 
     if score >= 90: 
      return "A" 
     elif score >= 80 and score < 90: 
      return "B" 
     elif score >= 70 and score < 80: 
      return "C" 
     elif score >= 60 and score < 70: 
      return "D" 
     else: 
      return "F" 

しかし、上記のように私は同じ問題を抱えています。どのように自分の成績を変えても、すべての生徒に「A」を返します。

あなたが共有したいと思うアドバイス、洞察、知恵などは、大変に感謝しています。

ありがとうございました!

+0

? – rassar

答えて

0

私は上記のコードを試しましたが、変更を加えることなく完全に正常に動作します。 あなたが関数を呼び出す方法を分かち合うことができれば、誤った手順についていくことができます。以下は、コードのスニペットとそれに対応する出力です。

lloyd = { 
     "name": "Lloyd", 
     "homework": [90.0, 97.0, 75.0, 92.0], 
     "quizzes": [88.0, 40.0, 94.0], 
     "tests": [75.0, 90.0] 
    } 
alice = { 
     "name": "Alice", 
     "homework": [100.0, 92.0, 98.0, 100.0], 
     "quizzes": [82.0, 83.0, 91.0], 
     "tests": [89.0, 97.0] 
    } 
tyler = { 
     "name": "Tyler", 
     "homework": [0.0, 87.0, 75.0, 22.0], 
     "quizzes": [0.0, 75.0, 78.0], 
     "tests": [100.0, 100.0] 
    } 

def average(numbers): 
     total = sum(numbers) 
     total = float(total)/len(numbers) 
     return total 

def get_average(student): 
     homework = average(student["homework"]) 
     quizzes = average(student["quizzes"]) 
     tests = average(student["tests"]) 
     studentaverage = (homework * .1 + quizzes * .3 + tests *.6) 
     return studentaverage 

def get_letter_grade(score): 
    if score >= 90: 
     return "A" 
    elif score >= 80: 
     return "B" 
    elif score >= 70: 
     return "C" 
    elif score >= 60: 
     return "D" 
    else: 
     return "F" 

# To calculate the grades of each student 
grade_tyler = get_letter_grade(get_average(tyler)) 
grade_lloyd = get_letter_grade(get_average(lloyd)) 
grade_alice = get_letter_grade(get_average(alice)) 

print(grade_lloyd) 
print(grade_alice) 
print(grade_tyler) 

出力:

B

C

またIはまた、個々のメソッドを呼び出し、結果が予想されたように試みました。

grade_A = get_letter_grade(95) 
grade_B = get_letter_grade(85) 
grade_C = get_letter_grade(75) 
grade_D = get_letter_grade(65) 

print(grade_A) 
print(grade_B) 
print(grade_C) 
print(grade_D) 

出力:

B

C

Dあなたは `get_letter_score`機能を使用している