2017-07-03 32 views
-1

私はあなたが望む数の学生のために3つのテストのスコアを入力することができ、最後に平均を計算したいと思う小さな練習プログラムを進めていますすべての生徒の間で私はすべての生徒の名前とスコアを入力することができます。そして、平均を返しますが、「*」と入力すると、生徒の平均の最終計算が行われ、すべての生徒の平均を計算する方法を見つけようとしていますそのテストの点数ネストされたループ内でクラスavgを見つける

def GetPosInt():  
     nameone = str 

     while nameone != "*": 

      nameone =(input("Please enter a student name or '*' to finish: ")) 

      if nameone != "*": 
       scoreone = int(input("Please enter a score for " + nameone +": ")) 

       if scoreone < 0: 
        print("positive integers please!") 
        break 

       else: 
        scoretwo = float(input("Please enter another score for "+nameone+": ")) 
        scorethree = float(input("Please enter another score for "+nameone+": ")) 

       testscores = scoreone + scoretwo + scorethree 
       avg = testscores/3 
       print("The average score for",nameone,"is ",avg) 
       classtotal = avg 

      if nameone == "*": 
       classavg = classtotal/3 
       print("The class average is: ",classavg) 

# main 
def main(): 
    GetPosInt() 

main() 
+0

投稿した直後に解決したので、実際に削除してください。 –

+0

申し訳ありませんが、私は明確ではありませんでした。私はあなたがその質問を投稿したことを思い出したことを確認したかっただけです。 :)質問者として、回答に印を付ける義務はありません。 –

+0

また、このプログラムの解決策はリストです。 –

答えて

0

COLDSPEEDは私が作業している間にあなたの質問の解決策を送りました。別の解決策を見たい場合。それはここにある...あなたはスコアのための条件を置くことができる。

def GetPosInt(): 
    numberOfStudents = 0.0 
    classtotal = 0.0 
    classavg = 0.0 
    while(True): 
     nam = (raw_input("Please enter a student name or '*' to finish ")) 
     if(nam == '*'): 
      print("The average of the class is " + str(classavg)) 
      break 
     numberOfStudents += 1.0 
     scoreone = float(input("Please enter the first score for " + str(nam) + ": ")) 
     scoretwo = float(input("Please enter the second score for " + str(nam) + ": ")) 
     scorethree = float(input("Please enter the third score for " + str(nam) + ": ")) 
     testscores = scoreone + scoretwo + scorethree 
     avg = testscores/3.0 
     print("The average score for " + str(nam) + " is " + str(avg)) 
     classtotal += avg 
     classavg = classtotal/numberOfStudents 

def main(): 
    GetPosInt() 
main() 
1

ここでは、複数の学生のためのデータを格納するためのリストを使用して、最後にこれらの詳細を表示するコードの簡易版ですし、またクラスの平均(コメントインライン化)を算出します。

def GetPosInt():  
    names = [] # declare the lists you'll use to store data later on 
    avgs = [] 

    while True: 
     name = ... 

     if name != "*": 
      score1 = ... 
      score2 = ... 
      score3 = ... 

      avg = (score1 + score2 + score3)/3 # calculate the student average 

      # append student details in the list 
      names.append(name) 
      avgs.append(avg) 

     else: 
      break 

    for name, avg in zip(names, avgs): # print student-wise average 
     print(name, avg) 

    class_avg = sum(avg)/len(avg) # class average 
+0

私はそれを実行しようとしたときにどのように見ますか私のコードでエラーが発生しました私はほとんど完了しました'avg'からの出力から値を格納する方法 –

+1

@drewyazzie '...'はあなたがいっぱいになることです。 –

+0

これは 'list'データ構造体に格納されます。 https://docs.python.org/2/tutorial/datastructures.html#more-on-lists –

関連する問題