前回は、Pythonでファイルを作成し、文字を書き込んだり読み込んだりする方法を学びましたね。
今回はその続きとして、ファイルに保存した数値データを読み込み、平均や最大・最小値を計算するプログラムを作ってみましょう。
■ ファイルを作って実行してみよう
1️⃣ 新しいファイルを作成し、名前を analyze_scores.py にします。
2️⃣ 同じフォルダに、次のような scores.txt を作成してください👇
80
65
90
75
55
この scores.txt は、テストの点数が1行ずつ入ったファイルです。
■ Pythonコードを書こう
Pythonファイルに次のコードを入力してください👇
with open("scores.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(lines)
■ Pythonファイルを実行する
ファイルを保存したら、**ターミナル(またはコマンドプロンプト)**を開き、次のコマンドを実行します👇
python analyze_scores.py
または(Mac / Linux の場合)
python3 analyze_scores.py
💬 .py という拡張子は「Pythonのプログラムファイル」という意味です。
このコマンドで、Pythonがファイルの中身を読み取り、順番に実行してくれます。
💬 実行結果:
['80\n', '65\n', '90\n', '75\n', '55\n']
💡補足:readlines()とstrip()の関係
readlines() は、ファイルの中身を1行ずつリストとして読み込む関数です。
ただし、各行の末尾には**改行文字(\n)**が残っています。
そのため、print(lines) の出力には \n が見えます。
これを取り除くために .strip() を使います👇
cleaned = [line.strip() for line in lines]
print(cleaned)
結果:
['80', '65', '90', '75', '55']
このように .strip() は文字列の前後にある空白や改行をきれいにしてくれる関数です。
■ 数値として扱うには?
今のままでは文字(文字列)として扱われているので、
計算をするために整数型(int)に変換します。
scores = [int(line.strip()) for line in lines]
print(f"読み込んだデータ:{scores}")
💬 実行結果:
読み込んだデータ:[80, 65, 90, 75, 55]
💡補足:リスト内包表記とは?
この1行👇
scores = [int(line.strip()) for line in lines]
は、Pythonならではの「リスト内包表記(List Comprehension)」と呼ばれる便利な書き方です。
ふつうに書くと、こうなります👇
scores = []
for line in lines:
score = int(line.strip())
scores.append(score)
それを1行で書けるのがリスト内包表記です。
「linesの中から1行ずつ取り出して、整えて、リストにまとめる」という処理をしています。
| 部分 | 意味 |
|---|---|
for line in lines | ファイルの各行を順番に取り出す |
line.strip() | 改行文字を削除する |
int(...) | 数値に変換する |
[ ... for ... ] | その結果をリストにまとめる |
■ 集計してみよう!
次に、読み込んだデータの合計点と平均点を計算してみましょう。
total = sum(scores)
average = total / len(scores)
print(f"合計点:{total} 点")
print(f"平均点:{average:.1f} 点")
💬 実行結果:
合計点:365 点
平均点:73.0 点
ここで使っている{average:.1f} の部分は、「小数点以下1桁まで表示する」という指定です。
もし .2f にすれば、2桁(例:73.00)まで表示されます。
■ 最高点と最低点も出してみよう!
Pythonには便利な関数がたくさんあります。
たとえば max() と min() を使えば、最高点・最低点もすぐに求められます👇
print(f"最高点:{max(scores)} 点")
print(f"最低点:{min(scores)} 点")
💬 実行結果:
最高点:90 点
最低点:55 点
これで、簡単なデータ分析プログラムが完成しました!🎉
■ コード全体
これまでのコードを1つにまとめると次のようになります👇
with open("scores.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
scores = [int(line.strip()) for line in lines]
total = sum(scores)
average = total / len(scores)
print(f"読み込んだデータ:{scores}")
print(f"合計点:{total} 点")
print(f"平均点:{average:.1f} 点")
print(f"最高点:{max(scores)} 点")
print(f"最低点:{min(scores)} 点")
■ まとめ
| 内容 | 説明 |
|---|---|
readlines() | ファイルを1行ずつリストとして読み込む |
.strip() | 改行文字を削除する |
int() | 文字を数値に変換する |
sum() / len() | 合計と件数を計算 |
max() / min() | 最大値・最小値を取得 |
:.1f | 小数点以下1桁を表示 |
| リスト内包表記 | for文を1行でまとめる便利な書き方 |

■ 次回予告
次回は、今回のように集計したデータをグラフにして可視化してみましょう!📊
数字を“見える形”にすると、データの特徴がぐっと分かりやすくなります。
「ちょっと難しかったかも…?」と思った人も大丈夫。
焦らずに、少しずつステップアップしていきましょう😊