2017-04-06 3 views
1

次に行うことです コースの最終成績を実行して分析するプログラムを作成します。プログラムはループを使用して、追加されるごとに各グレードをリストに追加する必要があります。このプログラムでは、10人の生徒の最終的な成績(全体のパーセントとしてのスコア)を入力するように求められます。プログラムは次のデータを表示します:Pythonコースの最終成績を実行し分析するプログラムを作成します。

  • クラス内で最高のスコアです。
  • クラス内で最も低いスコアです。
  • クラス内の平均点。

私は12行目でエラーが発生し続け、理由を理解できません。

ERROR:

Traceback (most recent call last): 
    File "H:/COMS-170/program7.py", line 33, in <module> 
    main() 

    File "H:/COMS-170/program7.py", line 12, in main 
    total = sum(info) 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

CODE:

def main(): 
    info = get_values() 
    total = sum(info) 
    average = total/len(info) 
    print('Highest Grade: ', max(info)) 
    print('Lowest Grade: ', min(info)) 
    print('Average is: ', average) 

def get_values(): 
    num_grades = 10 
    #making of the list 
    grades = [] 
    #ask the user for the info 
    print('Please enter the final grades for 10 students: ') 

    #put the info into the list with a loop 
    for i in range(num_grades): 
    grade = input('Enter a grade: ') 
    grades.append(grade) 
    return grades 
main() 
+0

どのようなエラーが表示されますか。それは "予期しないインデント"エラーですか? 12行目以降のすべては、4スペースの代わりに3スペースを使用しているようです。 – TehTris

+0

@TehTrisいいえトレースバック(最新の最終コール): ファイル "H:/COMS-170/program7.py"、行33、 main() ファイル "H:/ COMS-170/program7 (int)と 'str'の型がサポートされていません –

答えて

0

問題は、入力から読み込んだ後に、グレード変数の文字列のリストが得られることです。 したがって、intメソッドを使用して入力を解析することができます。

grades.append(int(grade)) 
+0

YES!この固定されたすべてがありがとう! –

+0

ようこそ。フロートを処理する必要がある場合は、原則は同じです – Olia

1

あなたのソリューションは、ユーザーの入力がstr値を返すようわずかな修正を必要とし、あなたがsumものにしたいが、最初のint秒にそれらをキャストし、このように:

def main(): 
    info = get_values() 
    total = sum(info) 
    average = total/len(info) 
    print('Highest Grade: ', max(info)) 
    print('Lowest Grade: ', min(info)) 
    print('Average is: ', average) 

def get_values(): 
    num_grades = 10 
    #making of the list 
    grades = [] 
    #ask the user for the info 
    print('Please enter the final grades for 10 students: ') 

    #put the info into the list with a loop 
    for i in range(num_grades): 
     grade = int(input('Enter a grade: ')) # convert the input `str` to `int` 
     grades.append(grade) 
    return grades 
main() 

アルしたがって、のような例外が発生しないように、int変換中に注意する必要があります。

希望すると助かります!

関連する問題