while文は、同じプログラムを何度も繰り返す必要があるループ処理に使われます。
しかしwhile文も、if分などと並んでなんとなく感覚でつかみにくい構文なので、なんとなく感覚がつかめないんですよね。
そこで自分が実際にコードを書いて、練習してみたことをここにまとめてみます。
while文の構造

まずはwhile 文の基本的な構造ですが、以下のようになります。
while 条件:
ステートメント

でも、これでは分かりにくいのですよね。そこで実際にwhile文を書いてみましょう。

しかし、以下のようなwhile文の場合、プログラムが止まらなくなるので気を付けてください。
count = 0 # 変数countに0を代入
while count < 5: # 変数countが5未満の間
print("無限ループの中にいます。") # 左の文をプリント
print("抜けられない") # 左の文をプリント
このプログラムを実行すると、無限にプログラムが実行されテキストが無限に出力されます。
簡単に構造を解説しますね。
まず 変数countに0を代入します。
次に、whileでcountが5未満の間「無限ループの中にいます」「抜けられない」がプリントされるようにします。
しかし、0はもともと5未満なので、上記二つのコメントが永遠にプリントされ続けることになります。

プリントされる数に制限をかけてみましょう。
count = 0
while count<5: # countが5未満の間
print("ループの中にいます。") # 左の文をプリント
print("何とかぬけだせた。") # 左の文をプリント
count = count + 1 # カウントに1を足すのを繰り返す。
ループの中にいます。
何とかぬけだせた。
ループの中にいます。
何とかぬけだせた。
ループの中にいます。
何とかぬけだせた。
ループの中にいます。
何とかぬけだせた。
ループの中にいます。
何とかぬけだせた。
この場合countの初期設定は0ですが、最後の1行で1づつ足されるようにプログラムします。
つまり毎回1づつ足され、countが0から4になるまでループを繰り返し、止まるようになっています。

数字を使っても同じことができます。
count = 0
while count<5: # countが5未満の間
print(count) # 左のステートメントを実行する。
count = count + 1 # countに1をを足すのを繰り返す。
0
1
2
3
4

さらに数字を変えてもOK。
count = 5
while count<=10: # countが10以下の間
print(count) # 左のステートメントを実行する。
count = count + 1 # countに1をを足すのを繰り返す。
5
6
7
8
9
10
while 文を使った応用

では少し応用です。
ユーザーが入力した数に基づいて、while文を使ったループを作っていきましょう。
ユーザーが入力した数に、変数countが10以下になるまでの数を一つずつかけ、その結果を表示します。
number = int(input("Enter a Number: ")) # ユーザーに入力を促す。
count=1
while count<=10: # count が 10以下の間
product = number * count # 入力された数と、countを掛け合わせた数を 変数productに代入し、
print(product) # 左のステートメントを実行する。
count = count +1 # countに1を足し続ける。
Enter a Number: 6
6
12
18
24
30
36
42
48
54
60
次に、出力した数を別のプログラムで使うために、リスト化したいと思います。
ここで必要になるのが、空の箱と append()関数になります。
早速やってみましょう。
number = int(input("Enter a Number: ")) # ユーザーに入力を促します。
A = [] # リスト用の空箱を設置します。
count=1
while count<=10: # count が 10以下の間
product = number * count # 入力された数と、countを掛け合わせた数を 変数productに代入。
count = count +1 # countに1を足す。
A.append(product) # append()関数を使って空箱Aに変数productに出力された値を代入
print(A) # Aをプリントする。
Enter a Number: 6
[6, 12, 18, 24, 30, 36, 42, 48, 54, 60]

以上、while文でいろいろやってみました。
このような簡単な、構文なら何とかなるようになったのですが、これ以上難しいものになると、どうなるか自信がないですね。
とりあえずは指を動かして、練習するしかないですね。
関連記事↓↓↓


コメント