開発者ドキュメント

Python3でwhileループを構築する方法

序章

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

A while ループは、指定されたブール条件に基づいてコードの繰り返し実行を実装します。 にあるコード while ブロックは、 while ステートメントはTrueと評価されます。

あなたは考えることができます while 繰り返し条件文としてループします。 後 if ステートメントでは、プログラムはコードを実行し続けますが、 while ループすると、条件がFalseになるまで、プログラムはwhileステートメントの先頭に戻ります。

特定の回数実行されるforループとは対照的に、 while ループは条件付きであるため、コードを繰り返す回数を知る必要はありません。

前提条件

Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)

Whileループ

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

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

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

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

情報:このチュートリアルのサンプルコードに従うには、ローカルシステムでPythonインタラクティブシェルを開いて、 python3 指図。 次に、例の後に追加して、例をコピー、貼り付け、または編集できます。 >>> 促す。

というファイルを作成します password.py 選択したテキストエディタで、変数を初期化することから始めます password 空の文字列として:

password.py
password = ''

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

今、私たちは構築します while その条件と一緒にステートメント:

password.py
password = ''

while password != '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.

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

  1. python password.py

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

Output
What 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.

チェックする前に文字列関数を使用して文字列をすべて小文字に変換しない限り、文字列では大文字と小文字が区別されることに注意してください。

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

これで、 while ループ、を使用するコマンドライン推測ゲームを作成しましょう while 効果的にループします。 このプログラムがどのように機能するかを最もよく理解するには、条件ステートメントの使用およびデータ型の変換についても読む必要があります。

まず、というファイルを作成します guess.py 選択したテキストエディタで。 ユーザーが推測できるようにコンピューターに乱数を考えさせたいので、インポートします。 random モジュールと import 声明。 このパッケージに慣れていない場合は、Pythonドキュメントから乱数の生成について詳しく知ることができます。

guess.py
import random

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

guess.py
import random

number = random.randint(1, 25)

この時点で、私たちは私たちに入ることができます while ループ。最初に変数を初期化し、次にループを作成します。

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

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

ループ内に、 print() ユーザーに番号の入力を求めるステートメント。 input() 機能し、に設定します guess 変数。 次に、変換しました guess 文字列から整数へ。

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

最後に、条件付きを記述します if かどうかを確認するステートメント guess ユーザーが作成したものは、 number コンピューターが生成したものであり、その場合は、breakステートメントを使用してループから抜け出します。

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

  1. python guess.py

それは機能しますが、現在、ユーザーは自分の推測が正しいかどうかを知ることはなく、正しいかどうかを知らなくても5回完全に推測することができます。 現在のプログラムの出力例は次のようになります。

Output
Guess 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

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))

この時点で、プログラムはユーザーに番号が正しいか間違っているかを通知します。これは、ユーザーが推測できないループの最後まで発生しない可能性があります。

途中でユーザーに少し助けを与えるために、さらにいくつかの条件ステートメントを追加しましょう。 while ループ。 これらは、ユーザーに自分の番号が少なすぎるか多すぎるかを知らせることができるため、正しい番号を推測する可能性が高くなります。 これらを前に追加します if 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:
        print('Your guess is too low')

    if guess > number:
        print('Your guess is too high')

    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 短いコマンドラインプログラムで動作中のループ。

結論

このチュートリアルでは、 while ループはPythonで機能し、その構築方法を説明します。 Whileループは、条件がで設定されている場合、コードのブロックをループし続けます。 while ステートメントはTrueです。

ここから、 forループおよびブレーク、続行、およびパスステートメントのチュートリアルを読んで、ループについて学習し続けることができます。

モバイルバージョンを終了