2016-08-30 15 views
0

教師が学生ID番号と生徒の成績を入力できるクラスの課題を終了します。最終学年は計算され、学生番号の隣に返されます。私は最終的なグレードを計算することはできますが、グレードを学生のリストに追加することはできません。初心者のpythonユーザーが関数間でデータをやりとりする必要があります

def assignments(): 
    assign1 = int(input("Assignment 1 grade: ")) 
    if assign1 > 100: 
     print ("Please input a valid grade value.") 
     assign1 = int(input("Assignment 1 grade: ")) 
    assign2 = int(input("Assignment 2 grade: ")) 
    if assign2 > 100: 
     print ("Please input a valid grade value.") 
     assign2 = int(input("Assignment 2 grade: ")) 
    assign3 = int(input("Assignment 3 grade: ")) 
    if assign3 > 100: 
     print ("Please input a valid grade value.") 
     assign3 = int(input("Assignment 3 grade: ")) 
    assign4 = int(input("Assignment 4 grade: ")) 
    if assign4 > 100: 
     print ("Please input a valid grade value.") 
     assign4 = int(input("Assignment 4 grade: ")) 
    assign5 = int(input("Assignment 5 grade: ")) 
    if assign5 > 100: 
     print ("Please input a valid grade value.") 
     assign5 = int(input("Assignment 5 grade: ")) 
    assign6 = int(input("Assignment 6 grade: ")) 
    if assign6 > 100: 
     print ("Please input a valid grade value.") 
     assign6 = int(input("Assignment 6 grade: ")) 
    assign7 = int(input("Assignment 7 grade: ")) 
    if assign7 > 100: 
     print ("Please input a valid grade value.") 
     assign7 = int(input("Assignment 7 grade: ")) 
    assign8 = int(input("Assignment 8 grade: ")) 
    if assign8 > 100: 
     print ("Please input a valid grade value.") 
     assign8 = int(input("Assignment 8 grade: ")) 
    assign9 = int(input("Assignment 9 grade: ")) 
    if assign9 > 100: 
     print ("Please input a valid grade value.") 
     assign9 = int(input("Assignment 9 grade: ")) 
    assign10 = int(input("Assignment 10 grade: ")) 
    if assign10 > 100: 
     print ("Please input a valid grade value.") 
     assign10 = int(input("Assignment 10 grade: ")) 
    assignGrade = assign1 + assign2 + assign3 + assign4 + assign5 + assign6 + assign7 + assign8 + assign9 + assign10 
    aGrade = assignGrade/10 
    print("The final grade for all assignments is: ") 
    print(aGrade) 
    midterm = int(input("Midterm grade: ")) 
    if midterm > 100: 
     print ("Please input a valid grade value.") 
     midterm = int(input("Midterm grade: ")) 
    finalExam = int(input("Final Exam grade: ")) 
    if finalExam > 100: 
     print ("Please input a valid grade value.") 
     finalExam = int(input("Final Exam grade: ")) 
    testsGrade = midterm + finalExam 
    tGrade = testsGrade/2 
    print("The final grade for all test is: ") 
    print(tGrade) 
    participation = int(input("Participation grade: ")) 
    if participation > 100: 
     print ("Please input a valid grade value.") 
     participation = int(input("Participation grade: ")) 
    partGrade = participation 
    print("The final grade for Participation is: ") 
    print(partGrade) 
    finalGrade = aGrade + tGrade + partGrade/3 


def students(): 
    netIDList = [] 
    maxLengthList = 6 
    while len(netIDList) < maxLengthList: 
     ID = input("Enter Student's Net ID: ") 
     netIDList.append(ID) 
    for s in netIDList: 
     print("Please input grades for student " + s) 
     assignments() 
     f = assignments().finalGrade 
     netIDList.append(": " + f) 
    print(netIDList) 

def main(): 
    students() 

main() 
+0

バック値を返します:あなたはすべての生徒の名前をそうような彼らのスコアとを印刷することができます

student_score_map = {} for s in netIDList: print("Please input grades for student " + s) f = assignments() student_score_map[s] = f 

この道を – Li357

+1

のIDが間違っていますので、作業中のプログラムがあるように修正してください。 – Vorsprung

+0

IDLE環境でインデントが正しいので、その部分を無視してください。 –

答えて

0

あなたの問題はここにある:それはオブジェクトではなく機能であるよう

f = assignments().finalGrade 
netIDList.append(": " + f) 

あなたがassignmentsにアクセスしています。 assignmentsに追加する値を戻したいとします。

def assignments(): 
    # do all your input and calculation here 
    finalGrade = aGrade + tGrade + partGrade/3 
    return finalGrade 

このように、関数はこの値を呼び出し元の場所に戻します。その後、変更

f = assignments().finalGrade 

EDIT

f = assignments() 

へ:あなたのように、基本的になりますforループ:

for s in netIDList: 
     print("Please input grades for student " + s) 
     f = assignments() 
     netIDList.append(": " + f) 

が、これはやや紛らわしいリストになります。

[student1_name, student2_name, student1_score, student2_score] 

だから私は辞書を使用します: `` を返す使用

for s in netIDList: 
    print(s + ' final score:' + student_score_map[s]) 
+0

ありがとうございます!その部分に答えた。今私は各ループが正しく動作するように私を得ることができます。 –

+0

@BryanHaoui編集しました、私はあなたがここで何を意味しているかは分かりません。 GLHF – Will

+0

必要はありません、あなたの助けてくれてありがとう。このコードは、私が望むのと全く同じように機能しました。 –

関連する問題