nanana、繰り返し処理を学ぶ(Python学習記録-2日目-)

■まえおき

下記の記事でPython学び直してやるぞーと宣言しました。 nanana-dot.hatenablog.com

今回と次回に分けて、「繰り返し処理」と「条件分岐処理」の、
ふたつの処理に関して整理しながら遊んでみたいと思います。

■今日の学び

  • 決まった回数の繰り返しを処理する「for」
  • 条件が満たされるまで繰り返しを処理する「while」

■お寿司注文ロボット1号

いきなりですが、私はお寿司が大好きです。
お寿司が好きすぎて、毎日お寿司ウェルカムです。それぐらい好き。
だけどあるとき、声が出なくなって注文ができなくなってしまったので、
ロボットをつくって代わりにお寿司を注文してもらうことにしました。
というなんとも電波な設定で話を進めて行きます。

お寿司のネタを注文するプログラムを、
「繰り返し」を使って書いてみたいと思います。

これがこちらです。

#サンプルコード
#好きな数だけサーモンが注文できる
numSamon = input('お客さん、好きな数だけ食ってくだせぇ!>')
chumon = 0
while chumon<int(numSamon):
    print('サーモンください')
    chumon += 1  
40  
サーモンください  
サーモンください  
サーモンください  
...
(以下、省略)

そもそもなぜ「繰り返し」と「条件分岐」なのか

そもそもプログラミングで実現したいことってなんでしょうか。 コンピューターは魔法の道具ではありません。
身の回りの問題には原理的には人の手で処理できるけど、
時間的制限や様々な理由から実現性がない問題が山ほどあります。
それらの問題を解決するためにコンピューターの力を借りて「処理」してもらうことが、
プログラミングで実現することじゃないかなと私は思います。

コンピューターにお願いしてやってほしいことを順番にプログラムする方法を、 「順次処理」といいます。
しかし、ちょっと複雑にしただけで、順次処理だけでは手間だったり、 そもそもできない処理もあるでしょう。
そこで登場するのが「繰り返し処理(ループ処理)」「条件分岐処理」です。
どのようにしてプログラミングで処理していくかを考えることを「フロー制御」といい、
Pythonだけじゃなくてどのプログラム言語を学ぶにしても基本中の基本の構造だと言えるでしょう。 「フロー」というのは「流れ」のことですので、
コンピューターがどの手順で処理して行くのかという流れを私たちが示してあげる必要があるわけです。

基本的な文法

まずは「繰り返し処理」です。
Pythonでは繰り返し処理をする構文として2パターンあります。
繰り返す回数Nが事前に決まっている場合と、繰り返す回数Nが不定に場合です。

繰り返す回数Nが事前に決まっている場合は「for」が有効です。
基本的な「for文」の書き方としては次のようになります。

for カウンター変数 in range(繰り返す回数N): #「:」を忘れずに
    繰り返す処理 #この部分を「ループブロック」といったりする

例としては、

for chumon in range(10):
    print('サーモンください')

出力は

サーモンください  
サーモンください  
サーモンください  
サーモンください  
サーモンください  
...
(以下、省略)  

と10貫分のサーモンの注文することができます。

一方で、繰り返す回数が決まってない繰り返し処理もあり、
特定の条件を満たすまで繰り返しを続ける処理を「待ちループ処理」とよんだりします。
この場合さきほどのfor文ではなく、「while」が有効です。
基本的な「whike文」の書き方としては次のようになります。

while 条件式: 
    繰り返す処理

例としては、

chumon = 0
while chumon<11:
    print('サーモンください')
    chumon += 1  

出力は

サーモンください  
サーモンください  
サーモンください  
サーモンください  
サーモンください  
...
(以下、省略)  

とまたもや10貫分のサーモンの注文することができます。
for文は決まった回数がプログラムされていたら常にその回数しか繰り返されませんが、
while文なら注文したいサーモンの数をその日の気分で変えることができます。
それでできたのが上記のコードです。

明日は「条件分岐」についてです。


本日の学習時間:2時間
累計の学習時間:4時間