python
1cnt = 0 2g = 0 3grade = [] 4while(1): 5 cnt += 1 6 g = int(input('Enter grade '+str(cnt) + ': ')) 7 if g==-1: 8 break 9 else: 10 grade.append 11 12 13 14 15avg = sum(grade)/len(grade) 16print('Average :' + str(avg)) 17 18 19if 90 <= avg: 20 grade = 'A++' 21elif 80 <= avg: 22 grade = 'A+' 23elif 70 <= avg: 24 grade = 'A' 25elif 60 <= avg: 26 grade = 'B' 27elif 50 <= avg: 28 grade = 'C' 29elif 40 <= avg: 30 grade = 'D' 31elif 33 <= avg: 32 grade = 'F+' 33elif 20 <= avg: 34 grade = 'F' 35else: 36 grade = 'FF' 37print ('Your grade is:{} '.format(avg)) 38
この問題をうまく作りたいのですがどこを変えたらいいでしょうか??
エラーでますよとか実行すればわかるこというのやめてください。
単純に解決策を探しているのでわからない方は回答しないでください。
エラーがでているのでしょうか?
エラー文も記載お願いします。
Enter grade 1: 80
Enter grade 2: 80
Enter grade 3: 9
Enter grade 4: -1
Traceback (most recent call last):
File "/Users/aya/Documents/new practice file.py", line 766, in <module>
avg = sum(grade)/len(grade)
ZeroDivisionError: division by zero
>>>
とこのような形になります。本来はマイナスのあたいを入力したのちそれまでの平均値を出し、その平均値がどのグレードに当てはまるのかを示さなければならないのですが。
よろしくお願いいたします。
エラーを翻訳にかけると、
> トレースバック(最後の最後の呼び出し):
<module>内のファイル "/ Users / aya / Documents / new Practice file.py"、行766
avg = sum(grade)/ len(grade)
ZeroDivisionError:ゼロによる除算
となります。
つまり、0に対して除算しちゃってるからエラーだよ
と言われています。
while文内の、
grade.appendは、中身を何も追加していないようですが、
どんな値を入れるのでしょうか?
gradeリストに何も入っていないため、
len(grade)が0となり、その行の計算が失敗しているのかと。
エラーって翻訳にかけられるんですか!?初めて知りました。
グレードのところは下の部分にあるif 文をいれるつもりで書いてみたのですが、違うのですね。ご丁寧にありがとうございます。再度書いてみます。
Google翻訳です。
日本語に直すと、だいたいのエラーはよりわかりやすくなります。
if文を直接入れることはできません。
appendメソッドは、
リスト変数に対して、値を追加するメソッドです。
list.append(なんらかの値)
というふうに使います。
つまり、()で実行していない時点で、間違った使い方をしているということです。
なるほど。それではどのようにアプローチするのがいいのでしょうか?
今ある自分の知識ではまったくおもいつきません。。。。
.appendをなくした方がいいのでしょうか?それともbreak らへんが違うのでしょうか?
どのようなアプローチがいいかなんて、第三者の私にはわかりません。
なぜなら、どのような実装をしたいか、が質問本文に記載されていないからです。
要件次第では、全然違う構文の方がいい可能性すらあります。
要件を定義し、質問本文に記載して下さい。
回答2件
あなたの回答
tips
プレビュー