

> 問題  
>  while を使って無限ループを作成します。  
>  その中で「点数を入力してください：」と表示して、テストの点数（整数値）を入力してもらいます。  
>  平均点は「点数の合計値 / 人数」で求められるので、一旦、入力された点数を合計値に加算します。  
>  -1 と入力されたら、そこで繰り返し処理を終了します。  
>  最後に「○○人のテストの平均点は△△点です」と表示してください。

自分のコード

[code]

    n = 1
    while True:
        score = int(input("点数を入力してください"))
        n += 1
        scores = 
        ave = score / n
        if score == -1:
            break
    print(ave)
    
[/code]

どうもうまくいきません。  
どうかご指摘頂ければ幸いです。


CC BY-SA 4.0
2020-09-22T05:21:36.697
70598
2021-04-22T01:04:55.537
2020-09-22T05:37:36.287
3060
42000
question
python
無限ループからの平均値を出したい


課題(宿題?)らしいので、考え方について以下のことを見直してみてください。

  * 初期化が必要だが、されていない変数があります。(初期化もその値で良いか考えてください)
  * 1個も有効なデータを入力せずに -1 が入力された場合に処理や結果がどうなるか考えてみてください。
  * 問題自身の記述不足(常識で考えてというのはありますが)ですが、そもそも -1 以外の マイナス値 は有効な値ですか？
  * 処理を短くしようとしているのか、何かをまとめてやろうとしておかしな計算処理になっています。  
問題を良く読んで、必要な処理だけを必要な場所で行うようにしましょう。

* * *

ちなみに問題文とソースコードを見較べると、 **問題文に書かれた内容を問題文に書かれた順番のままプログラムに変換** しようとして「平均点は「点数の合計値
/ 人数」で求められるので、一旦、入力された点数を合計値に加算します。」の部分が上手くできないので行き詰っている感じがします。

まだ完成しておらず動作させるまでには至っていないと感じているために、エラー等も提示していないのでは？

問題文はプログラムで実現すべき内容を箇条書きしているのであって、細かい実行手順(いわばフローチャート)までを示している訳ではないため、そういう方法では上手くいきません。

授業/講義/演習などならば、こうした文章で書かれている問題・課題を基にプログラムを作成する際に考えることや作業手順が、あらかじめ提示されているはずなので、それを再度見直してそれに従って作業してください。独学なら、そういうことに関する参考書籍や資料を探して勉強してください。

例えばこんなことを考える必要があるでしょう。

  * 問題に書かれている中で取り扱っているデータは何かを抽出する
  * 抽出したデータの特性(入力/作業/出力の分類、最大値/最小値、生存期間など)を考える
  * 問題に書かれている中で行われるべき作業を、それ以上分解できない最小限の単位にまで分ける
  * 分解した各作業で問題に書かれた内容を実現するために必要な実行順番(前後関係)を特定する


CC BY-SA 4.0
2020-09-22T06:17:12.210
70600
2020-09-23T00:01:11.173
2020-09-23T00:01:11.173
26370
26370
70598
answer