【Python】繰り返し処理、条件分岐処理

プロモーションが含まれています。

スポンサーリンク
サムネイル プログラム

繰り返し処理に使う命令は、「for」または「while」です。条件分岐処理には、「if (elif、else)」を使います。

「for」は繰り返し回数を指定するときに、「while」は分岐条件を指定ことができたり、無限ループをさせたりできます。

スポンサーリンク

繰り返し処理

forを使う

同じプログラムの処理を一定回数繰り返す時に使用します。for文で処理したいプログラムは、インデント(スペースやtab)で揃えなければいけません。スペースを1個使ったらそれ以降も1個にして統一して下さい。for文の中に他の構文を書いたときもそれに合ったインデントが必要です。

for count in range(回数):

countは「i」などでも良いです。回数は、繰り返したい回数を入力します。カウントは0から行われます。

a = 1
for count in range(5):
    a += 1
    print("count=",count)
    print("a=",a)

初期値1のaに1を加えます。ループ回数と計算結果aを表示します。これを5回ループさせるので、最終的なaは6になり、ループ回数は、0から始まるので4になります。

for文

コマンドプロンプトでプログラムを以下ている場合、エンターキーを押すと、結果を表示されます。結果が表示された後に「>>>」となるので、ここからプログラムを続けて入力していきます。

インデントエラー

for文以降をインデント(スペースやtab)で揃えなかったときにどのようなエラーが出るか確認しておきます。forだけでなく、様々な構文を使う時は必ずインデントを入れる必要があります。

インデントがプログラムとして意味があるのは、Pythonの特徴のひとつです。

a = 1
for count in range(5):
a += 1

試しにインデントを入れないで書きます。

for文エラー

上の画像は、for文の後の「a += 1」が問題でエラー(IndentationError)を検出しています。for文として必ずインデント(スペース)を入れる必要があります。インデントがプログラムの一部になっていて、プログラムに統一感が出るようになっています。異常検出部分に「^」を付けて説明しています。

注意事項
forの文末に「:」が必要です。そうするとfor以降が「…」となります。ここには、必ずスペースを入れなければなりません。半角スペースひとつでも問題ありませんが、tabキーでスペースを確保するのが一般的です。

文字列とfor

for chara in word:

言葉などの文字を抽出することができます。

word = "python"

for chara in word:
    print(chara)

for chara in word:
    print(word)

charaとwordを表示させたら、どんな処理がされるか確認していきます。

forと文字列

print(chara)だと、一文字ずつ分解して1文字ずつ表示します。print(word)だと、6文字分の6回「python」を表示しています。

スポンサーリンク

条件付き繰り返し処理

繰り返す回数ではなく条件で繰り返したい場合に「while」を使います。繰り返しではなく、条件分岐させたい場合は「if (elif、else)」を使用します。「if」については次の項目で説明します。

whileを使う

条件に合わせて処理したい場合に利用します。

while (条件):

初期値 a=50に10より大きければマイナス10を繰り返します。10以下になったらマイナス1していきます。

count = 0
a = 50

while (10 < a <= 50):
    count += 1
    a -= 10
    print("count=",count)
    print("a=",a)
    
while (0 < a <= 10):
    count += 1
    a -= 1
    print("count=",count)
    print("a=",a)        
while文

ひとつ目のwhileで区切って計算結果を表示します。ふたつ目のwhileで区切って計算結果を表示しています。ふたつ目の結果は、ひとつ目の結果が反映されます。

無限ループ

while True:

aとbを繰り返して表示します。aを表示した5秒後にbを、bを表示した1秒後にaを繰り返し表示します。「import」についてはまだ説明していませんが、取り敢えず書いて下さい。今回のプログラムは、Raspberry Piの最初に試す「Lチカ」と関係が深いです。

import time

while True:
    print("a")
    time.sleep(5)
    print("b")
    time.sleep(1)

Pythonの「timeモジュール」の使用を「import」宣言しています。

for無限ループ

a、bを繰り返し表示しています。「Traceback (most recent call last):」は、「ctrl+c」を押して強制停止させています。

スポンサーリンク

条件分岐

ifを使う

if (条件):
(プログラム)
elif (条件):
(プログラム)
else :
(プログラム)

「if」を使った条件分岐は、複数条件で分岐させる場合の中間条件は「elif」で条件を作ります。複数条件の条件分岐の場合、最後は「elif (条件):」か「else:」(if/elif以外の全て)で締めます。

効率よいプログラム

使用するコードや処理する順番などを考えると、効率の良いプログラムになります。慣れてくると、後々追加されるだろう

count = 0
a = 50

while True:
    if (10 < a) :
        count += 1
        a -= 20
        print("count=",count)
        print("a=",a)
    elif (0 < a):
        count += 1
        a -= 1
        print("count=",count)
        print("a=",a)
    else :
        break
if文

whileが無いと

ループさせている「while」が無いとどうなるか見るために「while True:」を外してみます。

if文while無

aが10以上なので a=50-20=30を計算します。ループしないので1回だけで終了です。

else:がないと

else :
    break

コマンドプロンプトだと一区切りするので、有っても無くても結果は変わりませんが、他の開発アプリで連続的にプログラムを書く場合は、ループから抜ける為に必要になることがあります。

比較演算子(おさらい)

>  大なり
>= 以上
<  小なり
<= 以下
== 等しい
!=  等しくない

比較演算子は条件分岐の時に良く使用します。覚書きとして載せておきます。

コメント

タイトルとURLをコピーしました