Python | 1 日 90 分 × 7 日アプリ学習:繰り返し入力メモアプリ(初級編)

Web APP Python
スポンサーリンク
スポンサーリンク

2日目のゴールと今日やること

2日目のテーマは
「while と終了条件を“雑な繰り返し”から“ちゃんとした入力ループ”に育てること」です。

1日目は
「終了と入力されたら終わる」だけの、超シンプルなメモアプリでした。

2日目ではそこに、

  • 空文字はメモとして扱わない
  • 余計なスペースを取り除く
  • 終了条件を少し柔らかくする(例:終了 / end 両方OK)

といった「現実の入力っぽいルール」を足しながら、
while と終了条件の考え方を一段深くしていきます。


1日目の基本形をもう一度おさらいする

シンプル版メモアプリ

まずは、1日目の基本形です。

memos = []

while True:
    text = input("メモを入力してください(終了 と入力で終わり):")

    if text == "終了":
        break

    memos.append(text)

print("入力されたメモ一覧:")
for memo in memos:
    print("-", memo)
Python

ここでの終了条件は
「入力された文字が "終了" だったら終わり」。

今日は、この「入力された文字」を
もう少し丁寧に扱っていきます。


空文字を“メモとしては扱わない”というルール

まず日本語でルールを書く

いきなりコードにせず、先に日本語で整理します。

  • 何も入力せずに Enter だけ押された場合は、メモとして保存しない
  • でも、アプリ自体は続ける(終了にはしない)

これは「終了条件」ではなく、
「この入力は無視して次に進む条件」です。

コードに落とし込む

memos = []

while True:
    text = input("メモを入力してください(終了 と入力で終わり):")

    if text == "終了":
        break

    if text == "":
        print("空のメモは保存しません")
        continue

    memos.append(text)

print("入力されたメモ一覧:")
for memo in memos:
    print("-", memo)
Python

ここで新しく出てきたのが continue です。


深掘り:break と continue の役割の違い

break は「ループそのものを終わらせる」

break は、
「この while(または for)をここで終わりにする」という命令です。

今回のコードでは、

if text == "終了":
    break
Python

と書いていて、
これは「ユーザーがアプリを終わらせたい」という意思を
そのままコードにしているイメージです。

continue は「この1回分だけ飛ばす」

一方で continue は、
「この1回分の残りの処理をスキップして、次の周回に進む」という命令です。

if text == "":
    print("空のメモは保存しません")
    continue
Python

これは、

  • 空文字だったら、メモには保存しない
  • でも、アプリ自体は続ける(次の入力に進む)

という意味になります。

ここで大事なのは、

  • アプリを終わらせる条件 → break
  • この入力だけ無視する条件 → continue

と、頭の中で役割を分けておくことです。


入力の前後のスペースを“きれいにする”

日本語でルールを書く

現実の入力では、こんなことがよく起きます。

  • 間違えて前後にスペースを入れてしまう(" こんにちは " など)
  • "終了 " のように、後ろにスペースが付いてしまう

これをそのまま比較すると、
"終了 " は "終了" と一致しないので、終了条件が効きません。

そこでルールをこうします。

  • 入力された文字列の前後の空白は、まず取り除いてから判定する

strip() を使う

Python には、文字列の前後の空白を取る strip() があります。

memos = []

while True:
    raw = input("メモを入力してください(終了 と入力で終わり):")
    text = raw.strip()  # 前後の空白を削除

    if text == "終了":
        break

    if text == "":
        print("空のメモは保存しません")
        continue

    memos.append(text)

print("入力されたメモ一覧:")
for memo in memos:
    print("-", memo)
Python

ここでのポイントは、

  • ユーザーの入力そのもの(raw)と
  • 判定に使う“整えた文字列”(text)

を分けていることです。

終了条件や空文字チェックは text を使う。
必要なら raw をそのまま保存する、という設計もできます。


終了条件を少し柔らかくする(複数の終了ワード)

日本語で条件を増やす

例えば、こんなルールを足してみます。

  • 「終了」または「end」と入力されたら終わり
  • 大文字小文字は区別しない(END でも End でも OK)

まずは日本語で条件を書きます。

入力された文字を小文字に変換したものが "終了" または "end" なら終わり

これをコードに落とし込みます。

lower() と or を組み合わせる

memos = []

while True:
    raw = input("メモを入力してください(終了 / end で終わり):")
    text = raw.strip()

    normalized = text.lower()

    if normalized == "終了" or normalized == "end":
        print("終了コマンドが入力されたので終わります")
        break

    if text == "":
        print("空のメモは保存しません")
        continue

    memos.append(text)

print("入力されたメモ一覧:")
for memo in memos:
    print("-", memo)
Python

ここでやっていることはシンプルです。

  • strip() で前後の空白を削る
  • lower() で小文字にそろえる
  • その結果を "終了" / "end" と比較する

終了条件が少し複雑になっても、
「日本語でルールを書く → それを if に落とす」という流れは同じです。


「終了条件」と「入力チェック」を頭の中で分ける

すべてを“終了条件”にしない

2日目で一番大事なのは、
ここです。

  • アプリを終わらせる条件(終了条件)
  • この入力だけ無視する条件(入力チェック)

を、頭の中でちゃんと分けること。

今回の例でいうと、

  • 終了条件:normalized == "終了" or normalized == "end"
  • 入力チェック:text == ""(空文字)

終了条件は break。
入力チェックは continue や「何もしない」で表現します。

この“役割の違い”を意識できると、
while の中身が一気に整理されて見えるようになります。


2日目の流れを言葉でなぞる

今日のコードの動きを、
あえて日本語だけで説明してみます。

  1. 空のリスト memos を用意する。
  2. while True: で繰り返しを始める。
  3. ユーザーから文字列を入力してもらう(raw)。
  4. strip() で前後の空白を削ったものを text に入れる。
  5. text を小文字にしたものを normalized に入れる。
  6. normalized が "終了" または "end" なら、break でループを終わる。
  7. text が空文字なら、「保存しません」と表示して continue。
  8. それ以外なら、memos.append(text) でメモを保存する。
  9. while の先頭に戻って、また入力を聞く。
  10. どこかで終了条件を満たしたらループを抜ける。
  11. 最後に memos の中身を一覧表示する。

この流れを自分の言葉で説明できるようになっていれば、
「while+終了条件+入力チェック」のセットはかなり身についています。


今日いちばん深く理解してほしいこと

2日目の本質は、これです。

「終了条件」と「入力チェック(スキップ条件)」は別物。
終了条件は break、スキップ条件は continue や“何もしない”で表現する。

そして必ず、

  • まず日本語でルールを書く
  • それを if 文に落とし込む
  • 必要なら strip() や lower() で“判定しやすい形”に整える

という順番で考えること。

この感覚がつかめていれば、
3日目以降で「回数制限」「最大メモ数」「ユーザー都合とアプリ都合の両方の終了条件」
といった、もう一段現実的なルールにも、落ち着いて対応できるようになります。

タイトルとURLをコピーしました