【pythonではじめるゲームプログラミング 第3回】反復
今回の記事はICONのpython勉強会の資料として書かれました。
担当は ふれうと です
はじめに
今回はプログラムにおける反復処理について学びます。
順次、分岐、反復の3つはプログラムの基本処理です。
この3つができれば、自分で好きなプログラムを書くことができます!
前回の順次、分岐と合わせて学んでいきましょう。
それでは早速プログラミングを始めましょう。
前回の記事
Step 3-1 反復処理
反復処理、または繰り返し処理とは
「特定の処理を繰り返し行う」
ということです。
pythonの反復処理では、while文とfor文が使われます。
基本的な使い分けとしては、
while文は繰り返す回数が決まっていない時、
for文は繰り返す回数が決まっている時、
に使うことが多いです。
(今回の記事では説明のため、while文でも繰り返す回数が決まっていることがあります。)
while文
pythonにおけるwhile文の書き方は以下のようになります。
while (条件文):
(条件文を満たしているときに実行される処理)
ここでwhile文は(条件文)を満たしている限り、(条件文を満たしているときに実行される処理)が繰り返し行われます。
具体例として、以下のプログラムをデスクトップの「ICONPythonLesson」フォルダに作成し、
「iteration.py」という名前で保存してください。
a = 1 while a < 5: print("*" * a) a += 1
作成出来たら、コマンドプロンプトで実行してみましょう。
cd Desktop/ICONPythonLesson
python iteration.py
以下のような結果が表示されると思います。
* ** *** ****
まず、print("*" * a)
の説明をすると、
(文字列) * (整数)
で(文字列)を(整数)回繋げた文字列になります。
つぎに、while文の説明をすると、
始めはa = 1
であり、a < 5
の条件を満たし、処理が実行される。
ここの処理で*
が出力され、a
が2
になる。
そして、while文なので、もう一度実行可能か条件の判断が行われる。
次はa = 2
であり、a < 5
の条件を満たし、処理が実行される。
ここの処理で*
が出力され、a
が3
になる。
そして、while文なので、もう一度実行可能か条件の判断が行われる。
次はa = 3
であり、a < 5
の条件を満たし、処理が実行される。
ここの処理で*
が出力され、a
が4
になる。
そして、while文なので、もう一度実行可能か条件の判断が行われる。
次はa = 4
であり、a < 5
の条件を満たし、処理が実行される。
ここの処理で*
が出力され、a
が5
になる。
そして、while文なので、もう一度実行可能か条件の判断が行われる。
次はa = 5
であり、a < 5
の条件を満たせず、処理が行われない。
以上がwhile文による反復処理の説明である。
注意
真似しないでください
もし、上記のプログラムを
a = 1 while a < 5: print("*" * a) #a += 1
このようにして実行してしまうと、
aの値が変わらず、常にwhile文の条件を満たすことになり、プログラムが終了しない。
永遠に*
が出力され続ける。
いわゆる「無限ループ」である。
もし万が一、上のプログラムを実行してしまった場合、
慌てず騒がず、
Ctrl + Cキーを押して、強制終了してください。
bool値
bool値(真偽値)とは、それが真(True)であるか偽(False)であるかの情報です。
二進数で動いているコンピュータと相性の良い値だと考えられます。
また、その値を持つ変数をbool変数と言います。
(他言語では bool を boolean と言ったりもします。)
pythonにおけるbool値は、True
かFalse
です。
(他言語では、全部小文字のtrue
やfalse
など、他の書き方をすることもあります)
ここで、if文やwhile文の条件文は、
その条件に合致したときTrue
であり、
その条件に合致しないときFalse
でとなっています。
つまり、以下のようなプログラムの書き方が可能です。
(実行しないでください。)
a = 1 while True: print("*" * a) a += 1
当然、このままだと無限ループです。
(もし実行してしまった場合、Ctrl + Cキー)
次に学ぶbreak文を用いることで、True
を用いたwhile文を記述することができます。
break文
break文とは、「反復処理を強制停止する」命令です。
pythonでは、以下のように記述します。
break
if文と共に用いて、while文などのループを停止させることが多いですね。
以下のように「iteration.py」を改変してみましょう。
a = 1 while True: print("*" * a) a += 1 if a > 4: break
改変したら、実行してみましょう。
最初のプログラムと同様の結果が表示されたでしょうか。
これがbreak文の基本的な使い方です。
continue文
continue文とは、
「後ろの処理をスキップして、反復処理の条件を判断させる」命令です。
pythonでは、以下のように記述します。
continue
if文と共に用いて、特定の処理をさせることが多いですね。
aの値が小さいときは*
を表示しないといった感じのプログラムを作ってみます。
以下のように「iteration.py」を改変してみましょう。
a = 1 while a < 15: a += 1 if a < 5: continue print("*" * a)
改変したら、実行してみましょう。
結果は以下のようになると思います。
***** ****** ******* ******** ********* ********** *********** ************ ************* ************** ***************
実行処理文の位置を間違えると、無限ループになることもあるので気をつけてください。
(実行しないでください)
a = 1 while a < 15: if a < 5: continue print("*" * a) a += 1
(もし実行したら、Ctrl + Cキー)
for文
pythonにおけるwhile文の書き方は以下のようになります。
for (変数) in (イテラブルオブジェクト): (実行される処理)
for文の説明は、
pythonにおけるリスト(他言語では配列と呼ぶこともある)を学んだあとの方が理解しやすいと思いますので、今回は存在の紹介に留めます。
Step 3-2 演習(FizzBuzz)
ここまでで、順次、分岐、反復の三つの基本処理を学びました。
それでは、学んだ基本処理を用いて、簡単なプログラムを実装しましょう。
FizzBuzz問題と呼ばれるものです。
「Hello world」と同じぐらい有名なものです。
以下にその仕様を述べます。
//////////////////////////////
ファイル名は「fizzbuzz.py」
コマンドプロンプトから数値Nを入力する。(100以下)
1から順にNまでの数値を出力する。
その際、3の倍数の時、数値の代わりに「Fizz」と出力する
また、5の倍数の時、数値の代わりに「Buzz」と出力する
また、3の倍数かつ5の倍数の時、数値の代わりに「FizzBuzz」と出力する
//////////////////////////////
それでは、実装してみましょう。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
実装しました??
以下は回答例です。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
プログラムは
print("数値を入力してください") n = int(input()) a = 1 while a <= n: if a % 15 == 0: print("FizzBuzz") elif a % 3 == 0: print("Fizz") elif a % 5 == 0: print("Buzz") else: print(a) a += 1
実行は
cd Desktop/ICONPythonLesson
python fizzbuzz.py
です。
終わりに
今回で、順次、分岐、反復の三つの基本処理を学び終わりました。
ここからは、自分の創造力次第であらゆるプログラムを作成できます。
ICONの他の勉強会などにも参加しつつ、自分の作りたいものを見つけてください!
第四回はコチラ!