2017-10-14 252 views
0

我必须根据用户输入计算一组值的平均等级,并在计算平均值之前删除最低等级。除了代码降低最低值外,我拥有一切。我尝试使用min函数,但是当在循环内部打印时,我得到“TypeError:'int'对象不可迭代。”任何想法如何解决这个问题?谢谢!在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

不要使用'eval()'!使用'int()'转换为整数。 – Cfreak

+1

至于你的问题。如果你想使用'min()'来获得最低成绩,你需要做一个列表。您正在通过循环将'gradeeval'重置为整数。或者,您可以使用另一个变量,并且每次都设置它低于前一个变量。 – Cfreak

+0

感谢您的回复。如果数字取决于用户的输入,我会如何将它列入清单? (对不起,如果这是一个愚蠢的问题,有史以来第一次编码!) – Hannah

回答

0

我修改了您的应用程序,请参阅下面的内容,并尝试了解需要哪些更改才能满足您的要求。

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