こんにちは。IT/経済ジャーナリストで投資家の渡辺です。
コンピュータの強みは、同じ処理を正確に、何度でも繰り返してできることです。
繰り返しのやり方はいくつかありますが、まずはもっとも代表的で、よく使われるwhile文を覚えるといいでしょう。
条件が合う限り繰り返すwhile
英語でいうwhile〜は、〜の間、という意味になります。
「〜」には、何かある条件が入ります。
その条件が満たされている間、言い換えれば、条件式がTrue(真)である間、whileの下でインデント(字下げ)された範囲が実行されます。
このような繰り返しを「ループ」といいます。
たとえばゲームのプログラミングでは、1)敵の攻撃の処理、2)自分のキャラの攻撃の処理、3)まだ自分のエネルギー(ヒットポイント)が残っているか判定、4)エネルギーが切れたら、負けの処理というループでできています。
もう少しシンプルな例として、「アンタはえらい!」を10回繰り返して表示させてみます(ネタが古い?)。
この時、整数の変数を1つ用意して、その数字を足したり引いたりして、回数をカウントさせます。
回数を数えるための変数なので、この変数をカウンターと呼びます。
この例では10回数えるので、以下のように変数counterを用意して、0から9までカウントさせます。
コンピュータでは数字は1からでなく、0から数えることに注意してください。
また1回ループしたら、回数を1つ増やさないといけないので、変数counterに1を加えます。
これを忘れると、変数counterの値が0のまま変わらないので、えんえんと処理が繰り返される、いわゆる無限ループになってしまうので、注意してください。
# coding: utf-8
counter = 0
while counter < 10:
print(“アンタはえらい!”)
counter = counter + 1
whileの次の行から、3〜5文字程度、インデントしている範囲が、繰り返して実行されます。
入力チェックのプログラムを改良する
もう少しwhile文の使い方を見ていきましょう。
ここでは、応用例として、前の回で作ったテストの点数から成績の評価をするプログラムをもっと使いやすく改良してみます。
<過去記事>
・ちょっとフクザツな条件もif文とand, orを使えば1行ですぱっとチェックできる
ここではif文で範囲をチェックするだけだったので、もしテストの点数で想定されない数値(100点より大きい値、またはマイナスの値)が入力されると、「違います」と警告だけ表示してそのまま判定プログラムは終わっていました。
これではいちいち誤入力のたびにプログラムを再起動させないといけないので、かなり面倒です。
そこで、繰り返しの処理を使って、誤入力をしたら警告メッセージを表示して、再入力を促すように作り変えます。
処理の流れをフローチャートで表すと、今まではこんな感じでした。
それを入力チェックしたら、もう1度入力するよう、作り替えます。
入力値が100点より大きいか、0点より小さい(マイナス)であれば、エラーメッセージを出して、もう1度ループの先頭に戻ります。
前回の判定プログラムのコードの入力処理のところを、while文で書き換えてみます。
以下のサンプルプログラムで、赤字のところが修正したところです。
if文を使わなくても、while文のところで判定が行われることに注目してください。
また2行目で、あらかじめ変数pointをわざわざ宣言して、最初に-1と(本来であれば誤った)数値をダミーで入れています。
別に-1でなくてもいいのですが、何か入れておかないと、最初にwhile文が実行されるタイミングで、(pointの中身が分からないのに、不等号出されても判断のしようがないよ)とコンピュータが困ってしまいます。
# coding: utf-8
point = -1
while point < 0 or point > 100:
point = int(input(“点数を入力(点数は0〜100点の範囲):”))
if point == 100:
print(“満点”)
elif point >= 80 and point < 100:
print(“優”)
elif point >= 70 and point < 80:
print(“良”)
elif point >= 60 and point < 70:
print(“可”)
elif point >= 0 and point < 70:
print(“不合格”)
これで適正な値が入力されず、警告が出ても、再入力して、処理を進めることができます。
以下の例では、100点より大きい値、マイナスの値、適正な値を入れてみました。
<今日の要約ノート>
・Pythonで同じ処理を何度も繰り返して実行させたい時は、while文を使う。whileの後ろにある条件が満たされている間は、その後ろにあるひとまとめの処理を実行する。整数の変数を用意して、カウンターとしてループの回数を数えさせて、一定の回数になったらwhile文を終了させるとよい。
コメント
[…] ・繰り返し処理はコンピュータの得意技 〜while文を使う […]