
はじめてのPython | 第22回
1. はじめに
この回では、これまで学んだ内容を組み合わせて、小さな実用プログラムを作ります。前回は、try と except を使ったエラー処理を確認しました。
今回は、入力、リスト、ファイル書き込み、関数を組み合わせて、メモを保存するプログラムを作ります。1つずつの文法ではなく、複数の基本をどう組み合わせるかを確認する回です。
2. この回で学ぶこと
inputを使った入力- リストにデータをためる方法
- ファイルへの書き込み
- 関数で処理をまとめる方法
- 小さな実用プログラムの組み立て方
3. 概念の説明
総合演習では、1つの文法だけでなく、複数の要素をつなげて考えることが重要です。今回のプログラムでは、次の流れで処理を進めます。
1. ユーザーにメモを入力してもらう
2. 入力されたメモをリストに追加する
3. リストの内容をファイルに保存する
この流れを関数に分けると、役割が分かりやすくなります。
たとえば、メモを集める関数と、メモを保存する関数を分けられます。
def collect_memos():
memos = []
return memos
def save_memos(memos):
pass実際には、それぞれの関数の中に必要な処理を書いていきます。
入力された内容は、1件ずつリストに追加します。
memos = []
memo = input("メモを入力してください: ")
memos.append(memo)リストにまとめたあとで、for を使って1行ずつファイルに書き込みます。
with open("memos.txt", "w", encoding="utf-8") as file:
for memo in memos:
file.write(memo + "\n")このようにすると、複数のメモをまとめて保存できます。
4. サンプルコード
次のコードを見てください。
def collect_memos():
memos = []
for i in range(3):
memo = input(f"{i + 1}件目のメモを入力してください: ")
memos.append(memo)
return memos
def save_memos(memos):
with open("memos.txt", "w", encoding="utf-8") as file:
for memo in memos:
file.write(memo + "\n")
memos = collect_memos()
save_memos(memos)
print("memos.txt に保存しました")このコードでは、3件のメモを入力してリストに入れ、その内容を memos.txt に保存しています。
5. 実行手順
まず、memo_app.py というファイルを作ります。
touch memo_app.pymemo_app.py をエディターで開き、次のコードを書いて保存します。
def collect_memos():
memos = []
for i in range(3):
memo = input(f"{i + 1}件目のメモを入力してください: ")
memos.append(memo)
return memos
def save_memos(memos):
with open("memos.txt", "w", encoding="utf-8") as file:
for memo in memos:
file.write(memo + "\n")
memos = collect_memos()
save_memos(memos)
print("memos.txt に保存しました")保存したら、ターミナルで次のコマンドを実行します。
python3 memo_app.pyたとえば、次のように入力します。
1件目のメモを入力してください: Python
2件目のメモを入力してください: リスト
3件目のメモを入力してください: ファイル保存
memos.txt に保存しました実行後に memos.txt を開くと、内容は次のようになります。
Python
リスト
ファイル保存6. コードの読み方
def collect_memos():は、メモを集める関数です。この関数の中で、空のリストmemos = []を作っています。for i in range(3):は、入力を3回くり返すための処理です。iは0、1、2と変わります。memo = input(f"{i + 1}件目のメモを入力してください: ")は、1件ずつメモを入力させています。f"...{i + 1}..."を使って、1件目、2件目、3件目と表示を変えています。memos.append(memo)は、入力されたメモをリストの最後に追加しています。return memosは、集めたメモの一覧を関数の外に返しています。def save_memos(memos):は、受け取ったリストをファイルに保存する関数です。with open("memos.txt", "w", encoding="utf-8") as file:は、memos.txtを上書きモードで開いています。for memo in memos:は、リストの中のメモを1件ずつ取り出しています。file.write(memo + "\n")によって、各メモを1行ずつファイルに書き込んでいます。- 最後の
print("memos.txt に保存しました")は、保存が終わったことを画面に知らせています。
7. 初学者がつまずきやすい点
- 入力されたメモはそのままでは1件ずつなので、複数件を扱うにはリストが必要
append()でリストに追加する- 関数を分けると、集める処理と保存する処理を整理しやすい
- ファイルに複数行を書き込むときは
forを使う - 行を分けるには
"\n"が必要
特に、file.write(memo) だけだと、複数のメモがつながって保存されます。1行ずつ保存したいなら memo + "\n" と書く必要があります。
また、collect_memos() で作ったリストを return しないと、関数の外でその内容を使えません。
8. よくあるエラー
1つ目は、リストに追加していない場合です。
def collect_memos():
memos = []
for i in range(3):
memo = input("メモを入力してください: ")
return memosこの場合、入力はしていますが、memos.append(memo) がないため、リストは空のままです。
2つ目は、書き込みで改行を入れていない場合です。
with open("memos.txt", "w", encoding="utf-8") as file:
for memo in memos:
file.write(memo)この場合、ファイルの内容は1行につながって見えます。1件ずつ改行したいなら file.write(memo + "\n") が必要です。
3つ目は、ファイル保存用の関数に引数を渡していない場合です。
def save_memos(memos):
with open("memos.txt", "w", encoding="utf-8") as file:
for memo in memos:
file.write(memo + "\n")
save_memos()このときは、次のようなエラーになります。
TypeError: save_memos() missing 1 required positional argument: 'memos'save_memos は、保存するメモの一覧を受け取る必要があります。
9. 練習用コード
次のコードを practice_memo_app.py として保存して実行してください。
def collect_memos():
memos = []
for i in range(2):
memo = input(f"{i + 1}件目のメモを入力してください: ")
memos.append(memo)
return memos
def save_memos(memos):
with open("practice_memos.txt", "w", encoding="utf-8") as file:
for memo in memos:
file.write(memo + "\n")
memos = collect_memos()
save_memos(memos)
print("practice_memos.txt に保存しました")実行したあとで、practice_memos.txt の内容を確認してください。
余裕があれば、入力件数を3件ではなく4件に変えて試してください。
10. この回で理解しておくこと
- 入力は
input()で受け取る - 複数のメモはリストで管理する
- 関数を使うと処理の役割を分けられる
- ファイル保存では
with open(..., "w", encoding="utf-8")を使う - リストの内容は
forとwrite()で1行ずつ保存できる
11. まとめ
今回は、入力、リスト、ファイル書き込み、関数を組み合わせて、メモを保存するプログラムを作りました。これまで学んだ基本は、単独で使うだけでなく、組み合わせることで実用的な処理になります。
小さなプログラムでも、入力して、ためて、保存するという流れを作れることが重要です。まずは、処理を順番に整理しながら読めるようにしてください。
12. 次回予告
次回は、CSVファイルを読み込んで集計する総合演習を行います。ファイル読み込み、数値変換、合計や平均の計算を組み合わせる方法を確認します。
復習してみよう
復習したい方は、こちらもあわせてご覧ください。










