質問: 4: end() else: exeption() ``` で実行してみた所 ``` [0]今月の収入を入力する [1]今月の支出を入力する [2]今月の支出内訳を見る [3]残金を確認する [4]アプリを終了する 0 今月の収入を入力してください。 10000 今月の収入は10000円です。 [0]今月の収入を入力する [1]今月の支出を入力する [2]今月の支出内訳を見る [3]残金を確認する [4]アプリを終了する 1 今月の支出を入力してください。 [0] : 入力する。 [1] : 入力を終える。 0 支払いの内訳を入力してください。 お菓子 金額を入力してください。 108 お菓子 : ¥108 [0] : 入力する。 [1] : 入力を終える。 1 ``` となりました。 def second()が終わった後、下のwhile以下を再度表示させたいのですがどうすればいいでしょうか?? ``` [0]今月の収入を入力する [1]今月の支出を入力する [2]今月の支出内訳を見る [3]残金を確認する [4]アプリを終了する 0 今月の収入を入力してください。 10000 今月の収入は10000円です。 [0]今月の収入を入力する [1]今月の支出を入力する [2]今月の支出内訳を見る [3]残金を確認する [4]アプリを終了する 1 今月の支出を入力してください。 [0] : 入力する。 [1] : 入力を終える。 0 支払いの内訳を入力してください。 お菓子 金額を入力してください。 108 お菓子 : ¥108 [0] : 入力する。 [1] : 入力を終える。 1 [0]今月の収入を入力する [1]今月の支出を入力する [2]今月の支出内訳を見る [3]残金を確認する [4]アプリを終了する ``` のようにさせたいです。 よろしくお願いします。
回答: end_secondを呼ぶとプログラムが終了してしまいます。 関数内関数を呼ぶのではなく、単にbreakしてループを抜ければ良いです。 ``` while True: print("[0] : 入力する。") print("[1] : 入力を終える。") sub_input = int(input()) if sub_input == 0: put_second() elif sub_input == 1: break else: other_second() ``` ところで、このように関数内関数を多用する方法はあまり一般的ではないです。