前書き

コンピュータープログラムは、タスクを自動化したり繰り返したりするのに最適なので、必要はありません。 同様のタスクを繰り返す1つの方法は、ループ*を使用することです。 このチュートリアルでは、Pythonの whileループ*について説明します。

+ while +`ループは、特定のhttps://www.digitalocean.com/community/tutorials/understanding-boolean-logic-in-python-3 [ブール]条件に基づいてコードの繰り返し実行を実装します。 `+ while`ブロックにあるコードは、 + while`ステートメントがTrueと評価される限り実行されます。

+ while +`ループは、繰り返しhttps://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-python-3-2[conditional statement]として考えることができます。 `+ if`ステートメントの後、プログラムはコードの実行を続けますが、 + while`ループでは、条件がFalseになるまでプログラムはwhileステートメントの先頭に戻ります。

特定の回数実行する* https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3 [for loops] *とは対照的に、 `+ while +`ループは条件に基づいているため、入ってくるコードを繰り返す回数を知る必要はありません。

Whileループ

Pythonでは、 `+ while +`ループは次のように構築されます。

while [a condition is True]:
   [do something]

行われていることは、評価されている条件がもはや真でなくなるまで実行され続けます。

「+ while +」ループを実行する小さなプログラムを作成しましょう。 このプログラムでは、ユーザーにパスワードの入力を求めます。 このループを通過する間、2つの可能な結果があります。

  • パスワードが正しい場合、「+ while +」ループは終了します。

  • パスワードが正しくない場合、「+ while +」ループが実行され続けます。

選択したテキストエディタで「+ password.py 」というファイルを作成し、変数「 password +」を空のhttps://www.digitalocean.com/community/tutorial_series/working-withとして初期化することから始めます。 -strings-in-python-3 [string]:

password.py

password = ''

空の文字列は、 `+ while +`ループ内でユーザーからの入力を取り込むために使用されます。

次に、条件とともに `+ while +`ステートメントを作成します。

password.py

password = ''

ここでは、 `+ while `の後に変数 ` password `が続きます。 変数 ` password `が文字列 ` password +`に設定されているかどうかを確認しています(後でユーザー入力に基づいて)が、どの文字列でも選択できます。

これは、ユーザーが文字列「+ password 」を入力すると、ループが停止し、プログラムがループ外のコードの実行を継続することを意味します。 ただし、ユーザーが入力した文字列が文字列「 password +」と等しくない場合、ループは継続します。

次に、 `+ while`ループ内で何かを行うコードブロックを追加します。

password.py

password = ''

while password != 'password':
   print('What is the password?')
   password = input()

`+ while `ループ内で、プログラムはパスワードの入力を求めるprintステートメントを実行します。 次に、変数「 password 」が「 input()+」関数を使用してユーザーの入力に設定されます。

プログラムは変数 `+ password `が文字列 ` password `に割り当てられているかどうかを確認し、割り当てられている場合は、 ` while +`ループが終了します。 それが起こるときのために、プログラムに別のコード行を与えましょう:

password.py

password = ''

while password != 'password':
   print('What is the password?')
   password = input()

print('Yes, the password is ' + password + '. You may enter.')

最後の `+ print()`ステートメントは ` while `ループの外側にあるため、ユーザーがパスワードとして ` password +`を入力すると、ループの外側に最終的なprintステートメントが表示されます。

ただし、ユーザーが「+ password 」という単語を入力しないと、最後の「 print()+」ステートメントに到達せず、無限ループに陥ります。

*無限ループ*は、プログラムが1つのループ内で実行を継続し、終了しない場合に発生します。 コマンドラインの無限ループを終了するには、 `+ CTRL + C +`を押します。

プログラムを保存して実行します。

python password.py

パスワードの入力を求められ、さまざまな入力を使用してテストできます。 プログラムからの出力例は次のとおりです。

OutputWhat is the password?
hello
What is the password?
sammy
What is the password?
PASSWORD
What is the password?
password
Yes, the password is password. You may enter.

string functionも使用して文字列を変換しない限り、文字列では大文字と小文字が区別されることに注意してくださいチェックする前にすべて小文字(たとえば)にします。

Whileループを使用したプログラム例

「+ while 」ループの一般的な前提を理解したので、「 while +」ループを効果的に使用するコマンドライン推測ゲームを作成しましょう。 このプログラムがどのように機能するかを最もよく理解するには、https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-python-3-2 [条件文を使用]およびhttps://www.digitalocean.com/community/tutorials/how-to-convert-data-types-in-python-3 [データ型の変換]。

まず、選択したテキストエディタで「+ guess.py 」というファイルを作成します。 ユーザーが推測できるようにコンピューターに乱数を作成してほしいので、https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3 [import] ` import `ステートメントを持つ ` random +`モジュール。 このパッケージに慣れていない場合は、https://docs.python.org/3.6/library/random.html [Pythonドキュメントから乱数を生成する]の詳細をご覧ください。

guess.py

import random

次に、ゲームを難しくしすぎないように、変数 `+ number +`にランダムな整数を割り当て、1〜25の範囲に含めます(両端を含む)。

guess.py

import random

この時点で、最初に変数を初期化してからループを作成して、 `+ while`ループに入ることができます。

guess.py

import random

number = random.randint(1, 25)

変数 `+ number_of_guesses `を0に初期化したため、ループを繰り返すたびに変数を増やして、無限ループが発生しないようにします。 次に、 ` number_of_guesses `が合計5つに制限されるように、 ` while +`ステートメントを追加しました。 5回目の推測の後、ユーザーはコマンドラインに戻ります。今のところ、ユーザーが整数以外の何かを入力すると、エラーが表示されます。

ループ内で、ユーザーに数値を入力するように促す「+ print()」ステートメントを追加しました。これは、「 input()」関数で取り込み、「 guess 」変数に設定しました。 次に、 ` guess +`を文字列から整数に変換しました。

ループが終了する前に、 `+ number_of_guesses +`変数を1増やして、ループを5回繰り返すことができるようにします。

最後に、条件付きの + if +`ステートメントを記述して、ユーザーが作成した `+ guess +`がコンピューターが生成した `+ number +`と同等であるかどうかを確認し、そうであればhttps://www.digitaloceanを使用します。 com / community / tutorials / how-to-use-break-continue-and-pass-statements-when-working-with-loops-in-python-3 [+ break +` statement]がループから抜け出します。

プログラムは完全に機能しており、次のコマンドで実行できます。

python guess.py

動作はしますが、ユーザーは推測が正しいかどうかを知ることができず、正しいかどうかを知ることなく5回完全に推測できます。 現在のプログラムの出力例は次のとおりです。

OutputGuess a number between 1 and 25:
11
Guess a number between 1 and 25:
19
Guess a number between 1 and 25:
22
Guess a number between 1 and 25:
3
Guess a number between 1 and 25:
8

ループの外側に条件ステートメントをいくつか追加して、ユーザーが数字を正しく推測したかどうかについてのフィードバックをユーザーに与えるようにします。 これらは現在のファイルの最後に配置されます。

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
   print('Guess a number between 1 and 25:')
   guess = input()
   guess = int(guess)

   number_of_guesses = number_of_guesses + 1

   if guess == number:
       break

この時点で、プログラムはユーザーに数字の正誤を知らせます。これは、ユーザーが推測できないループの終わりまで起こらない場合があります。

ユーザーに少し助けを与えるために、いくつかの条件ステートメントを `+ while `ループに追加しましょう。 これらは、ユーザーに数字が低すぎるか高すぎるかを伝えることができるため、正しい数字を推測する可能性が高くなります。 ` of guess == number`行の前にこれらを追加します

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
   print('Guess a number between 1 and 25:')
   guess = input()
   guess = int(guess)

   number_of_guesses = number_of_guesses + 1







   if guess == number:
       break

if guess == number:
   print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
   print('You did not guess the number. The number was ' + str(number))

`+ python guess.py `を使用してプログラムを再度実行すると、ユーザーが推測の際にガイド付きの支援を受けられることがわかります。 したがって、ランダムに生成された数値が「+12」であり、ユーザーが「18」を推測すると、推測が高すぎると通知され、それに応じて次の推測を調整できます。

ユーザーが整数を入力しない場合のエラー処理など、コードを改善するためにできることは他にもありますが、この例では、短いコマンドラインプログラムで動作中の `+ while +`ループがあります。

結論

このチュートリアルでは、Pythonでの `+ while `ループの動作とその構築方法について説明しました。 *ループ中は、 ` while +`ステートメントで設定された条件がTrueであれば、コードブロックをループし続けます。

ここから、* https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3 [for loops] *のチュートリアルを読むことで、ループについて学習し続けることができます。 * https://www.digitalocean.com/community/tutorials/how-to-use-break-continue-and-pass-statements-when-working-with-loops-in-python-3 [break、continue、andパス文] *。