行う作業がない場合、ループを分岐して入力を探すにはどうすればよいですか?
基本的に 3 行または 4raw_input
行を要求し、それらに基づいていくつかの作業を行い、無限にループするスクリプトを作成しています。ただし、raw_input
行は選択です (いくつかのステートメントのいずれかを入力するように求めています)。ブール値と while ループを混乱させて、それが受け入れられるステートメントであることを確認する代わりに、次のような単純なことを行う方が簡単でクリーンであると思いました。
if theInput != 'Acceptable Statement' and theInput != 'Another acceptable statement':
restartLoop()
if theSecondInput != 'Acceptable Statement' and theInput != 'Another acceptable statement':
restartLoop()
など、必要なすべての入力に対して。終了したかのように、現在のサイクルを中止し、別のサイクルで再開します。すべてのデータが収集されて承認されるまで実際には何も起こらないため、これによって問題が発生することはありません。これが代替手段であることを認識しています:
if theInput == 'Acceptable Statement' or theInput == 'Another acceptable statement':
if theSecondInput == 'Acceptable Statement' or theInput == 'Another acceptable statement':
doThings()
else:
doNothing()
else:
doNothing()
ただし、ユーザーが入力を間違えた後、5 つの質問をして最終的に #2 が間違っていると伝えるのではなく、ループを終了させたいと考えています。
EDIT:もう少し明確にするために、私はまだ無限にループしたい(シェルを離れるだけでループを離れます)、完了せずにループを再開したいだけです。IE さん、多くの製品を作るとき、いくつかのステップでループに陥っています。しかし、手順を間違えると、不良品を捨ててしまい、最後までやり直すことになります。