2016-09-29 2 views
1
First_Name = input("What is your first name: ") 
Last_Name = input("what is your Last Name: ") 
print ("Hello, let's see what your grades are like", First_Name, Last_Name,  ",you degenerate!") 

grade_one = int(input("Enter your first grade: ")) 
grade_two = int(input("Enter your second grade: ")) 
grade_three = int(input("Enter your third grade: ")) 
grade_four = int(input("Enter your fourth grade: ")) 
grade_five = int(input("Enter your fith grade: ")) 
grades = grade_one,grade_two,grade_three,grade_four,grade_five 
Grade_list.append(grades) 
print (Grade_list) 

def average(numbers): 
    total = sum(numbers) 
    total = float(total) 
    results = total/len(numbers) 
    return results 
print (average(Grade_list)) 

基本的にここで達成しようとしていることユーザーが入力したグレードのリストの平均を取得しています。これをリストに変換しました。しかし、私が使用した技術の数にかかわらず、リストを平均化しているように見えるかもしれません(私はこれにはまったく新しいので、おそらく適切な技術を採用していないでしょう)。私はこのエラーが何を意味するのかわからないんだけどリストを平均化しようとしていますが、エラーの意味がわかりません:+: 'int'と 'tuple'のサポートされていないオペランドタイプ

Traceback (most recent call last): 
    File "python", line 23, in <module> 
    File "python", line 19, in average 
TypeError: unsupported operand type(s) for +: 'int' and 'tuple' 

、私はそれが整数の連続したリストとして印刷されなければならないとき、私のリストはタプルとして印刷されたアイデアを持っている:私は、エラーを越えてきます。私はそれを修正する方法についてはわかりませんが(それが問題であれば)。前もって感謝します!私のコードはおそらくそこでは最も効率的なコードではないことに気がついています。 :)。これは学校の割り当てなので、ロケットの科学は私が気づいているわけではありませんが、私はこれについて私の頭を包んでいるようには見えません。あなたはこのラインでタプルを作成しているためである

答えて

1

説明

grades = grade_one,grade_two,grade_three,grade_four,grade_five 

あなたがprint(grades)を設定した場合は、右その行の後に、あなたはあなたの出力は、例えば、表示されます

Grade_list.append(grades) 
(56, 56, 56, 56, 56) 

だから、ときあなたはこれを呼び出します

あなたは今それ内部の単一のタプルとリストを作成している:

だから、
[(56, 56, 56, 56, 56)] 

、あなたのメソッドを呼び出すとき、あなたは、エラーメッセージがある場所を正確にあるタプル、照らし合わせて計算を実行しようとしていますから来る。あなたが求めている各エントリではなく、あなたのGrade_listに各回答を追加した後

は厳密にあなたのコードに集中するソリューションは、あなたが代わりにやってすべきか、です。あなたは何をしているかを改善する方法の提案のために、今すぐ

grade_one = int(input("Enter your first grade: ")) 
Grades_List.append(grade_one) 
grade_two = int(input("Enter your second grade: ")) 
Grades_List.append(grade_two) 

のように...

はたとえば、あなたが何をすべきかのあなたのコードのスニペットを表示します。代わりに何をすべきかは、ユーザーに自分の成績を尋ねてリストに追加する回数を使い果たしてから、すべてのことを行うためにいくつかの変数を作成する必要はありません。

だから、あなたは自分の成績のためにユーザーに尋ねるコードのあなたの全体のチャンクを置き換えることができます。

Grade_list = [] 
for grade_number in range(1, 6): 
    grade = int(input("Enter grade {}: ".format(grade_number))) 
    Grade_list.append(grade) 

変更で更新されたコードを実行すると、我々が得る:

What is your first name: bob 
what is your Last Name: hope 
Hello, let's see what your grades are like bob hope ,you degenerate! 
Enter grade 1: 44 
Enter grade 2: 44 
Enter grade 3: 44 
Enter grade 4: 44 
44.0 
+1

うわー、本当にありがとう、本当に私のコードをきれいにしました!私は今どこが間違っていたかを見ます:)。私は何らかのループを使うことを考えていたが、実際にどのように行っているか正確にはわからなかった(私は自分自身を知りたいとは思っていないと思う。それは有り難いです。 – Navysealsnake

+0

@Navysealsnake大歓迎です。がんばろう。 – idjaw

+0

しかし、私は間違っている場合は.formatコマンドに関する1つの質問がありますが、範囲内の整数を呼び出すことができるように "入力等級{}:"と仮定していますか?それらの行に沿った何か?私はその部分を削除して、それがどのような効果を奏し、 'Str'(文字列)が呼び出し可能ではないことに気付いた。ちょうど私がそれを正しく理解していることを確認することそれ以外はうまくいきます。 – Navysealsnake

関連する問題