2017-10-14 4 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()'を使いたいなら、リストを作る必要があります。あなたは 'graeeval'をループで整数としてリセットします。あるいは、別の変数を使用して、前の変数よりも低い場合は毎回設定することができます。 – 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 
関連する問題