一瞬でマスター!Pythonのwhile文を用いた10の最強テクニック

Pythonのwhile文を用いたプログラミング技術のマスターに必要な全情報を網羅した記事Python

 

【当サイトはコードのコピペ・商用利用OKです】

このサービスはASPや、個別のマーチャント(企業)による協力の下、運営されています。

記事内のコードは基本的に動きますが、稀に動かないことや、読者のミスで動かない時がありますので、お問い合わせいただければ個別に対応いたします。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10000時間以上』を満たすプログラマ集団によって監修されています。

はじめに

プログラミング言語の一つであるPythonの基本的な制御構造として、while文が存在します。

この記事では、Pythonのwhile文の使い方、注意点、カスタマイズ方法まで、初心者でも理解できるように詳細に解説していきます。

さまざまなサンプルコードを通じて、Pythonのwhile文を用いたプログラミングが身につくこと間違いなしです。

●Pythonとは

Pythonは、読みやすさに重点を置いた汎用的なプログラミング言語で、初心者から経験者まで幅広く使われています。

その特徴は、強い表現力と簡潔なコード、そして初心者でも学びやすいことです。

●Pythonのwhile文とは

○基本的な構文

while文は、指定した条件が真である限り処理を繰り返す制御構文です。

基本的な形は次のようになります。

while 条件式:
    処理

このコードではwhileキーワードを使って、条件式が真と評価される間、インデント内の処理を繰り返すことを示しています。

●Pythonのwhile文の使い方

次に、Pythonのwhile文の具体的な使い方を見ていきましょう。

○サンプルコード1:繰り返し処理

下記のサンプルコードでは、0から4までの数を順に出力するプログラムを紹介します。

i = 0
while i < 5:
    print(i)
    i += 1

このコードでは、iが5未満の間、iの値を出力し、その後でiに1を加えるという処理を繰り返しています。

このようにwhile文は、特定の条件を満たす間は処理を繰り返すという特性から、繰り返し処理を実現するのに便利です。

実行結果は「0」「1」「2」「3」「4」という5行の出力になります。

○サンプルコード2:無限ループとbreak文

次のサンプルコードは、無限ループを作り、特定の条件でループを終了させる例を表しています。

n = 0
while True:
    if n == 5:
        break
    print(n)
    n += 1

このコードでは、無限にループを繰り返すwhile True:という構文を用いています。

ただし、nが5になったときにbreak文が実行され、ループが終了します。

そのため、実行結果は「0」「1」「2」「3」「4」という5行の出力となります。

○サンプルコード3:continue文を用いた処理のスキップ

continue文は、ループの中で処理をスキップしたい場合に使用します。

下記のサンプルコードは、1から9までの数を順に出力し、その数が偶数のときだけスキップするプログラムです。

num = 0
while num < 9:
    num += 1
    if num % 2 == 0:
        continue
    print(num)

このコードでは、numの値が偶数(2で割り切れる)のとき、continue文が実行され、それ以降の処理がスキップされて次のループに移ります。

したがって、実行結果は奇数の「1」「3」「5」「7」「9」が出力されます。

●Pythonのwhile文の応用例

ここでは、さらに一歩進んでPythonのwhile文を使った具体的な応用例を紹介します。

これらの例を通じて、while文の使い方をより深く理解し、あなた自身のコーディングに活用してみてください。

○サンプルコード4:累積和を求める

下記のサンプルコードでは、1から10までの数字の累積和を計算します。

このコードでは、while文を使って繰り返し処理を行い、それぞれの繰り返しで数値を累積的に合計しています。

num = 1
sum = 0
while num <= 10:
    sum += num
    num += 1
print(sum)

このコードを実行すると、1から10までの合計である55が出力されます。

これはwhile文が1から10までの数を一つずつ加える操作を繰り返しているためです。

○サンプルコード5:リスト内の要素を全て探索する

次に、while文を使ってリスト内の全ての要素を探索する例を見てみましょう。

下記のサンプルコードでは、リスト内の各要素を順番に出力しています。

list = ['apple', 'banana', 'cherry']
i = 0
while i < len(list):
    print(list[i])
    i += 1

このコードを実行すると、’apple’, ‘banana’, ‘cherry’というリストの各要素が順に出力されます。

これは、while文がインデックスを1つずつ増やしながらリストの各要素にアクセスしているからです。

○サンプルコード6:数当てゲーム

ここでは、ユーザーが指定した数値を当てるシンプルな数当てゲームを作成します。

下記のコードでは、while文を使ってユーザーが正しい数値を入力するまで入力を求め続けます。

import random
answer = random.randint(1, 10)
guess = int(input("1から10までの数字を当ててみてください: "))

while guess != answer:
    guess = int(input("違います。もう一度試してみてください: "))
print("正解です!")

このコードを実行すると、まず1から10までのランダムな数値を生成し、ユーザーに入力を求めます。

ユーザーが入力した数値が生成したランダムな数値と一致するまで、入力を求め続けます。

○サンプルコード7:フィボナッチ数列

次に、while文を使ってフィボナッチ数列を生成する例を見てみましょう。

フィボナッチ数列は、前の2つの数の合計が次の数になる数列です。

a, b = 0, 1
while a < 100:
    print(a)
    a, b = b, a+b

このコードを実行すると、100未満のフィボナッチ数列が出力されます。

これは、while文がaが100に達するまでaとbの値を更新し続けているからです。

○サンプルコード8:リスト内の数値の平均値を求める

まずはリスト内の数値の平均値を求める例を見てみましょう。

この例では、while文を使ってリスト内の全ての数値を順番に加算し、その合計値をリストの長さで割ります。

これによって平均値を求めることができます。

# リストの初期化
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 変数の初期化
total = 0
i = 0

# while文を使ってリスト内の数値を全て加算
while i < len(numbers):
    total += numbers[i]
    i += 1

# リスト内の数値の平均値を求める
average = total / len(numbers)

# 平均値の出力
print('平均値:', average)

このコードは、numbersというリストの中の数字を一つずつ取り出して、合計値を計算しています。

さらに、合計値をリストの要素数で割ることで平均値を求めています。

最後に、計算結果を出力します。

実行結果:

平均値: 5.5

上記のコードを実行すると、リストnumbersの平均値である5.5が出力されます。

○サンプルコード9:入力値が偶数か奇数かを判定する

次に、Pythonのwhile文を使って、入力値が偶数か奇数かを判断する例を見てみましょう。

# ユーザーからの入力を待つ
number = input('数字を入力してください:')

# 入力が正しい場合の処理をループ
while number.isdigit():
    number = int(number)
    # 偶数か奇数かの判定
    if number % 2 == 0:
        print(number, 'は偶数です')
    else:
        print(number, 'は奇数です')
    # ユーザーからの入力を再度待つ
    number = input('数字を入力してください:')

このコードでは、まずユーザーからの入力を待ちます。

入力された値が数字の場合、その数値が偶数か奇数かを判断します。

この判断は、入力値を2で割った余りを調べることで行います。

余りが0の場合、入力値は偶数です。それ以外の場合、入力値は奇数です。

実行結果(入力値が「2」、「3」の場合):

数字を入力してください:2
2 は偶数です
数字を入力してください:3
3 は奇数です

上記のコードを実行し、「2」、「3」を入力すると、「2 は偶数です」、「3 は奇数です」という結果が出力されます。

○サンプルコード10:特定の条件を満たすまで処理を繰り返す

この例では、Pythonのwhile文を使って特定の条件を満たすまで処理を繰り返すというテクニックを見てみましょう。

具体的には、乱数を生成し、その数値が特定の数値になるまで生成を続けます。

import random

# 初期値を設定
num = 0

# 6が出るまで乱数を生成する
while num != 6:
    num = random.randint(1, 6)
    print(f'生成された数値:{num}')

print('6が生成されました!')

このコードでは、まずrandomモジュールをインポートします。

次に、変数numを初期化します。そして、while文を使ってnumが6になるまで乱数を生成します。

この乱数は1から6までの範囲で生成されます。そして、生成された数値を表示します。

numが6になるとwhile文から抜け出し、’6が生成されました!’と表示します。

実行結果(乱数の生成結果が異なるため結果も変わります):

生成された数値:3
生成された数値:1
生成された数値:2
生成された数値:5
生成された数値:6
6が生成されました!

上記のコードを実行すると、乱数が生成され、その結果が表示されます。

そして、6が生成されると、while文から抜け出し、’6が生成されました!’と表示されます。

●注意点と対処法

Pythonのwhile文を使用する際の注意点は、無限ループに陥る可能性があることです。

条件式が常に真である場合、while文は終了せずに処理が繰り返されます。

その結果、プログラムは停止せずに無限に動き続けることになります。

例えば、次のコードを見てみましょう。

i = 0
while i < 5:
    print(i)

このコードは無限ループになります。なぜなら、iの値が増加しないため、条件式i < 5が常に真になるからです。

無限ループを防ぐためには、ループ内で条件式が偽になるような処理を入れることが重要です。

上記のコードは次のように修正します。

i = 0
while i < 5:
    print(i)
    i += 1

この修正版のコードでは、iの値が増加するため、いずれ条件式i < 5が偽になり、while文から抜け出せます。

●カスタマイズ方法

Pythonのwhile文は、その基本的な構造を保ったまま、様々な形でカスタマイズすることができます。

たとえば、break文を使用して特定の条件下でループを強制的に終了したり、continue文を使用してループの残りの部分をスキップし、次の繰り返しを開始することも可能です。

while文をカスタマイズした例を挙げてみます。

i = 0
while i < 10:
    i += 1
    if i == 5:
        continue
    print(i)

このコードでは、iが5のときcontinue文が実行され、print(i)がスキップされます。

その結果、出力結果に5が含まれません。

このように、Pythonのwhile文を使うと、あらゆる種類のループ処理を柔軟に作成できます。

カスタマイズの方法は無限大で、あなたのニーズに応じてコードを最適化することができます。

まとめ

この記事では、Pythonのwhile文を使ったプログラミングの基本的なテクニックを紹介しました。

while文は条件式が真である限り、処理を繰り返すため、特定の条件が満たされるまでループしたい場合に非常に便利です。

しかし、無限ループに陥る可能性もあるため、注意深く使用する必要があります。

また、Pythonのwhile文はカスタマイズが容易で、様々な状況に対応できるため、プログラミングにおける強力なツールと言えます。

是非、これらのテクニックを自分のコードに組み込んで、Pythonのwhile文を最大限に活用してみてください。