質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

1740閲覧

pythonの平均値の求め方

naoya0922

総合スコア23

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/07 12:18

やりたいこととして、exam.txtファイル内に数字が羅列してありそれらの平均値を求めて、その平均値をaverage.txtファイルに書き込むと言う処理をしたいのですが、
上から4行目のappend内でsum(line)/lenlineとしてもうまくいかずおそらくlineが元々文字列型だからなのだと思うのですがその場合のやり方が調べても見つからないのでお願いいたします。

*exam.txtファイル内の羅列の仕方は
55
35
67
32
.
.
.
のように二桁の数字が羅列してあります。

f = open("exam.txt","r",encoding="utf-8") result = [] for line in f: result.append(int(line)) f.close() f = open("average.txt","w",encoding="utf-8") f.write(str(result)+"\n") f.close()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/12/07 13:01

> 上から4行目のappend内でsum(line)/lenlineとしてもうまくいかず どう「うまくいかず」なのでしょうか?
guest

回答4

0

  • 特に縛りがないのであれば、リストの数値の平均はstatistics.meanで求めればいい。
  • ファイルの読み書きは、withブロックwith open(……) as f:を使おう。ブロックから出る際に自動的にクローズしてくれる。
  • ファイル全体を読んで1行ずつ取り出すには、readlinesが使える。
  • 特に縛りがないのであれば、さまざまな値を埋め込めるf文字列f"……"を使うことを薦める。

Python

1import statistics 2 3with open("exam.txt", "r") as f: 4 lst = [int(line) for line in f.readlines()] 5 6with open("average.txt", "w") as f: 7 f.write(f"{statistics.mean(lst)}\n")

投稿2020/12/07 13:44

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今、提示されたコードだと、resultにはexam.txtの内容を数値にしたものの「リスト」が入りますよね?

なので、それをそのままavarage.txtに書き込むのでなく。平均を計算して書き込めばいいですよね。

平均は、(総和)÷(総数)です。
リストの総和はsum関数で計算できます。
リストの総数は、len関数で計算できます。

これらを使って計算しした値から平均を計算して書き込みましょう。

投稿2020/12/07 13:20

TakaiY

総合スコア12763

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

あなたが平均を計算する場合はどのようにするんでしょうか。
その手順をそのままコードに落とせばいいだけです

投稿2020/12/07 12:53

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

下から②行目を

f.write(str(sum(result)/len(result))+"\n")

でうまくいきました。

投稿2020/12/07 13:39

naoya0922

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問