2017-07-03 2 views
-1

Ich arbeite ein kleines Übungsprogramm, das Ihnen erlaubt, die 3 Testergebnisse für so viele Studenten einzugeben, wie Sie möchten, und am Ende möchte ich, dass es den Durchschnitt berechnet zwischen allen Studenten. Ich bin in der Lage, alle Namen und Ergebnisse der Schüler einzugeben und es gibt mir ihren Durchschnitt zurück, aber wenn Sie "*" eingeben, berechnet es nur den letzten Schülerdurchschnitt und ich versuchte herauszufinden, wie man den Durchschnitt aller Schüler berechnen kann ihre TestergebnisseEine Klasse avg innerhalb einer verschachtelten Schleife finden

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

Ich löste es kurz nachdem ich es gepostet hatte, also hätte ich es eigentlich löschen sollen –

+0

Sorry, ich war nicht klar. Ich wollte nur sicherstellen, dass du dich erinnerst, dass du diese Frage gestellt hast. :) Als Fragesteller sind Sie nicht verpflichtet, Antworten zu markieren. –

+0

Auch die Lösung für dieses Programm ist eine Liste. –

Antwort

0

COLDSPEED schickte Ihnen eine Lösung für Ihre Frage, während ich daran arbeitete. Wenn Sie eine andere Lösung sehen möchten. Es ist hier ... Sie können Bedingungen für die Punkte setzen.

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

Hier ist eine vereinfachte Version des Codes, die Listen zum speichern von Daten für mehrere Studenten verwendet und zeigt dann diese Details am Ende, und berechnet auch die Klassendurchschnitt (Kommentare inlined).

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

Wie sehen Sie es, als ich versuchte es auszuführen Ich bin sofort mit einem Fehler in meinem Code Ich bin fast fertig Ich muss nur herausfinden Wie speichert man die Werte von der Ausgabe von 'avg' –

+1

@drewyazzie Die '...' ist für Sie zu füllen. –

+0

Es ist in einer 'liste' Datenstruktur gespeichert. Hier finden Sie mehr: https://docs.python.org/2/tutorial/datastructures.html#more-on-lists –

Verwandte Themen