Python | 1 日 90 分 × 7 日アプリ学習:簡単メニュー選択アプリ(初級編)

Web APP Python
スポンサーリンク

2日目のゴール

2日目のテーマは
「メニューを“1回きり”ではなく、何度でも選べるようにすること」です。

1日目では、

数字でメニューを表示する
入力された番号に応じて関数を呼び分ける

ここまでできました。

今日はそこから一歩進んで、

メニューを繰り返し表示する
「終了」を選ぶまで何度でも使えるようにする
間違った入力に少しだけ強くする

という、“アプリとしてちゃんと使える形”に近づけていきます。


メニューは「1回で終わる」と使いにくい

1日目の形の限界

1日目の main は、だいたいこんな形でした。

def main():
    show_menu()
    choice = input("番号を選んでください: ")

    if choice == "1":
        say_hello()
    elif choice == "2":
        show_goal()
    elif choice == "0":
        print("アプリを終了します。")
    else:
        print("不正な入力です。")
Python

これはこれで正しいのですが、
一度何かを選んだら、そのままアプリが終わってしまいます。

現実のアプリを想像すると、
「1回ボタンを押したらアプリが終了」って、かなり不便ですよね。

そこで今日は、
「0(終了)が選ばれるまで、メニューを繰り返す」
という形に進化させます。


while で「メニューを回し続ける」形にする

まずは形を見てみる

メインの流れを、こう書き換えます。

def main():
    while True:
        show_menu()
        choice = input("番号を選んでください: ")

        if choice == "1":
            say_hello()
        elif choice == "2":
            show_goal()
        elif choice == "0":
            print("アプリを終了します。")
            break
        else:
            print("不正な入力です。0, 1, 2 のどれかを選んでください。")
Python

ここでの重要ポイントは、2つです。

while True: で「ずっと繰り返す」ループを作っている
break で「0 が選ばれたときだけループを抜ける」

つまり、

「永遠にメニューを出し続ける」
けれど
「終了が選ばれたら、ちゃんと止まる」

という構造になっています。


「ループ+分岐+関数」の関係を言葉で整理する

日本語で流れを説明してみる

さっきの main を、日本語にしてみます。

終了するまで、ずっと次を繰り返す
 メニューを表示する
 番号を入力してもらう
 もし “1” なら、あいさつする関数を呼ぶ
 もし “2” なら、目標を表示する関数を呼ぶ
 もし “0” なら、「終了します」と表示して、ループを抜ける
 それ以外なら、「不正な入力です」と表示する

ここで大事なのは、

「ループは“何度もやる”担当」
「if は“どれをやるか選ぶ”担当」
「関数は“実際の処理をやる”担当」

という役割分担ができていることです。


メニュー表示を少し“アプリっぽく”整える

画面がごちゃつかないようにする

毎回メニューを出すと、
画面が文字だらけになって、
どこが区切りか分かりにくくなります。

そこで、区切り線の関数を足します。

def print_line():
    print("==========")
Python

show_menu をこう変えます。

def show_menu():
    print_line()
    print("メニュー")
    print_line()
    print("1: あいさつする")
    print("2: 今日の目標を表示する")
    print("0: 終了する")
    print_line()
Python

これだけで、
「メニューのかたまり」が目で追いやすくなります。

見た目を整える処理を関数にまとめるのは、
“アプリらしさ”を上げるうえでかなり効きます。


間違った入力に少しだけ強くする

何も入力されなかったとき

ユーザーがうっかり Enter だけ押すこともあります。

choice = input("番号を選んでください: ")

if choice.strip() == "":
    print("何も入力されていません。0, 1, 2 のどれかを入力してください。")
    continue
Python

continue
「この周の処理をここで終わりにして、次のループに進む」
という意味です。

これを main の中に入れると、
「空入力のときは何もせず、もう一度メニューからやり直し」
という動きになります。


2日目のミニアプリ:何度でも選べる簡単メニュー

今日の学びを全部入れたコード

def print_line():
    print("==========")


def say_hello():
    print("こんにちは!Python 初級メニューへようこそ。")


def show_goal():
    print("今日の目標:")
    print("・メニューを何度でも選べるようにする")
    print("・0 が選ばれるまでループを続ける")


def show_menu():
    print_line()
    print("メニュー")
    print_line()
    print("1: あいさつする")
    print("2: 今日の目標を表示する")
    print("0: 終了する")
    print_line()


def main():
    while True:
        show_menu()
        choice = input("番号を選んでください: ")

        if choice.strip() == "":
            print("何も入力されていません。0, 1, 2 のどれかを入力してください。")
            continue

        if choice == "1":
            say_hello()
        elif choice == "2":
            show_goal()
        elif choice == "0":
            print("アプリを終了します。")
            break
        else:
            print("不正な入力です。0, 1, 2 のどれかを入力してください。")


main()
Python

このコードを、役割ごとに言葉で整理してみます。

print_line
メニューの上下に引く区切り線を表示する。

say_hello
あいさつメッセージを表示する。

show_goal
今日の学習目標を表示する。

show_menu
メニュー全体を表示する。

main
「メニューを表示 → 入力を受け取る → 分岐して関数を呼ぶ → 0 なら終了」という流れを、
0 が選ばれるまで繰り返す。


2日目のまとめ:今日つかんでほしい感覚

今日の本質は、これです。

メニューは「1回きり」ではなく
“ループの中で何度も表示するもの”

ループは「何度もやる」担当。
if は「どれをやるか選ぶ」担当。
関数は「実際の処理をやる」担当。

この 3 つを組み合わせると、
「ちょっとした設定画面」や「小さなツール」なら
自分で組み立てられるようになります。

3日目以降は、
このメニューの中身を少しずつ増やしながら、
「メニューから呼び出す“機能”を育てていく」方向に進みます。

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