[解決済み] Pythonテキストメニューの無限ループ
2022-02-08 13:58:28
質問
Pythonで簡単なテキストメニューを作っているのですが、メニューのためのwhileループに入るたびに無限ループになってしまいます。私はこれが正しく動作するように感じるので、何が起こっているのかよくわかりません。
# Menu system!
def menu():
print "blahblah options"
loop = 1
choice = 0
while loop == 1:
choice = menu()
if choice == 1:
add(input("Add this: "),input("to this: "))
elif choice == 2:
sub(input("Subtract this: "),input("from this: "))
elif choice == 3:
mul(input("Multiply this: "),input("by this: "))
elif choice == 4:
div(input("Divide this: "),input("by this: "))
elif choice == 5:
loop = 0
ここで、一番上のprintステートメントを延々とループさせる原因は何なのでしょうか?
解決方法は?
の行が足りません。
menu
または
input
を他の場所に移動します。まだユーザーからの選択を受け入れていないのです。もし、今の構造を維持したいのであれば
menu
のようにする必要があります。
def menu():
print 'options...'
return int(raw_input())
あるいは、もう少しきれいに(同じ効果)。
def menu():
return int(raw_input('options...'))
そうでない場合は、単に
menu()
で、別途ユーザーの選択を受け付ける。
while loop == 1:
menu()
choice = int(raw_input())
備考
を変更したこと。
input()
の呼び出しを
int(raw_input())
. これは
だいぶ
入力に任意の Python コードを埋め込むことができないので、ユーザーからの入力を受け取るより安全な方法です!
ノットオントピック。
さて、たまたま気がついたからということで、次のことも書いておきます。
loop
は誤解を招く可能性のある変数名です。ブール値として使っているだけなので、whileループをこんな風に書き換えてみてはどうでしょう。
loop = 1
while loop: # !
#do stuff
これはちょっと面白いのですが、読んでいてあまり直感的ではありません。通常は、単純に無限にループして
break
を使用すると、終了条件を満たしたときに
while True:
# Do stuff
if choice == 5: #Or whatever end condition
break
関連
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python関数の高度な応用を解説
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
任意波形を生成してtxtで保存するためのPython実装
-
Python LeNetネットワークの説明とpytorchでの実装
-
Python 入出力と高次代入の基礎知識
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。