2017-10-14 2 views
0

Ich muss die durchschnittliche Note für eine Reihe von Werten basierend auf Benutzereingabe berechnen, während die niedrigste Note vor der Berechnung des Durchschnitts fallen. Ich habe alles außer dem Code, um den niedrigsten Wert fallen zu lassen. Ich habe versucht, mit der min-Funktion, aber wenn in der Schleife gedruckt bekomme ich "TypeError: 'int' Objekt ist nicht iterierbar." Irgendeine Idee, wie man das repariert? Vielen Dank!Erkennen niedrigsten Wert von Benutzereingabe in Python 3.6

numuser=eval(input("How many users are there?: ")) 
numgrade=eval(input("How many grades will there be for each user?: ")) 
usercount=0 
gradecount=0 

while usercount <= numuser: 
    name=input("Please enter the user's first and last name: ") 
    gradetot=0 
    while gradecount < numgrade: 
     gradeval=eval(input("Please enter the grade: ")) 
     gradetot=gradetot+gradeval 
     gradecount=gradecount+1 

low = min(gradeval) 
tot = gradetot-low 

print("The average grade for", name, "is :", tot/gradecount) 
numuser=numuser-1 
usercount=usercount+1 
gradecount=0 
+1

Verwenden Sie 'eval()' nicht! Verwenden Sie 'int()', um in eine Ganzzahl zu konvertieren. – Cfreak

+1

Was Ihr Problem betrifft. Wenn Sie 'min()' verwenden möchten, um die niedrigste Note zu erhalten, müssen Sie eine Liste erstellen. Sie setzen 'gradeval' als Ganzzahl durch die Schleife zurück. Alternativ können Sie eine andere Variable verwenden und jedes Mal einstellen, wenn sie niedriger als die vorherige ist. – Cfreak

+0

Danke für Ihre Antwort. Wie würde ich eine Liste machen, wenn die Zahlen von den Benutzereingaben abhängig sind? (Sorry, wenn das eine dumme Frage ist, das erste Mal überhaupt Codierung!) – Hannah

Antwort

0

Ich habe Ihre Anwendung geändert, bitte sehen Sie unten und versuchen zu verstehen, welche Änderung benötigt, um Ihre Anforderung zu erfüllen.

numuser=eval(input("How many users are there : ")) 
numgrade=eval(input("How many grades will there be for each user : ")) 
usercount=0 
gradecount=0 
gradeval = [] # you need a array to store a range of values 

while usercount <= numuser: 
    name=input("Please enter the user's first and last name : ") 
    gradetot=0 
    while gradecount < numgrade: 
     val=eval(input("Please enter the grade : ")) 
     gradeval.append(val) 
     gradetot=gradetot+val 
     gradecount=gradecount+1 

low = min(gradeval)# min function need a range of values 
tot = gradetot-low 

print("The average grade for : ", name, "is : ", tot/gradecount) 
numuser=numuser-1 
usercount=usercount+1 
gradecount=0