見出し画像

プログラミング学習~Python初級編②~


はじめに

本記事ではPython学習の初級編②として、「条件分岐」、「繰り返し」、「関数」について学習します。Python学習の初級編①の内容を理解していることを前提に進めていきますので、まだ読んでいない方は、ぜひ初級編①を読んでから本記事をご覧ください。


条件分岐

条件分岐とは?

条件分岐とは、特定の条件が満たされた場合にのみ処理が実行される仕組みのことです。これにより、プログラムの流れを柔軟に制御できます。例えば、ある条件が真(True)であるときにのみ特定のコードが実行されるようにします。以下のイメージの様に「もし~ならば~を行う、それ以外であれば~を行う」の様に考えます。
赤字の部分を「条件式」青字の部分が実際の処理内容になります。

条件分岐のイメージ

条件分岐の使い方①

条件分岐は「if 条件式①: 処理内容① elif 条件式②: 処理内容② else: 処理内容③」のようにコーディングします。このとき、ifやelifの末尾に付ける「:」の付け忘れや、条件式が満たされた場合に実行される処理の記載場所(インデント)が正しくないとエラーになるので注意が必要です。

# 変数「traffic_light 」を用意
traffic_light = "blue"

if traffic_light == "blue":      # もし信号機「青信号」ならば歩いて道を渡る
    print("歩いて道を渡る")
elif traffic_light == "red":     # もし信号機「赤信号」ならば止まる
    print("止まる")
else:                            # それ以外であれば走って道を渡る
    print("走って道を渡る")
# 変数「traffic_light 」を用意
traffic_light = "blue"

if traffic_light == "blue"       # 「:」がないとエラーが発生
    print("歩いて道を渡る")
elif traffic_light == "red" :   
print("止まる")                  # printの処理を記載する位置が正しくないとエラーが発生
else:                            
    print("走って道を渡る")

ここで、条件式についてもう少し詳しく説明します。まず、「traffic_light == “blue”」という条件式は、変数traffic_lightの値が"blue"と等しいかどうかを確認するものです。このように、右辺と左辺の値を比較演算子を使って比較する式を条件式と呼びます。比較演算子には以下のようなものがあります。

# 変数を用意
a = 10

# 右辺と左辺が等しい
a == 10

# 右辺と左辺が等しくない
a != 10

# 左辺が右辺より大きい
a > 10

# 左辺が右辺より小さい
a < 10

# 左辺が右辺以上
a >= 10

# 左辺が右辺以下
a <= 10

条件分岐の使い方②

条件分岐についての基本的な内容を踏まえて、もう少し複雑な使い方を見ていきましょう。具体的な例や応用技法についても解説します。次の要件を満たすプログラムを作成してみましょう。「25と15を加算した結果が奇数かつ3の倍数であれば、合計値を変数totalに格納し、出力する。また、偶数かつ10の倍数であれば、totalから合計値を減算し、出力する。」
以下が先ほどの要件を満たすサンプルのプログラムです。サンプルと違っても要件を満たしていればOKです。

# 25と15をそれぞれ変数に格納
a = 25
b = 15

# 合計値を格納する変数を初期化
total = 0
if (a + b) % 2 != 0:             # a + bの結果が奇数の場合
    if (a + b) % 3 == 0:         # a + bの結果が3倍数の場合
        total = a + b            # a + bの結果とtotalに格納
        print(total)             # totalを出力する
elif (a + b) % 2 == 0:           # a + bの結果が偶数の場合
    if (a + b) % 10 == 0:        # a + bの結果が10の倍数の場合
        total = total - (a + b)  # totalから合計値を減算する
        print(total)             # totalを出力する

# 別解
if (a + b) % 2 != 0 and (a + b ) % 3 == 0:    # a + bの結果が奇数かつa + bの結果が3倍数の場合
    total = a + b
    print(total)
elif (a + b) % 2 == 0 and (a + b) % 10 == 0:  # a + bの結果が偶数かつa + bの結果が10の倍数の場合
    total = total - (a + b)
    print(total)

プログラムの解説を行います。分かる人は飛ばしてください。
今回はプログラムの要件から条件式を作成し、それを組み合わせて処理を行う方法を解説します。はじめに要件から条件を考えます。

  1. 条件①: 「25と15を加算した結果が奇数かつ3の倍数」

  2. 条件②: 「偶数かつ10の倍数」

偶数は「2で割った時の余りが0」奇数は「2で割った時の余りが0ではない」と言い換える事ができます。それを踏まえてPythonでは、ある値を2で割った時の余りを求める演算子「 %」 を使用します。

  • 奇数の条件式: (a + b) % 2 != 0

  • 偶数の条件式: (a + b) % 2 == 0

次に、3の倍数と10の倍数を表す条件式を作成します。
3の倍数は「3で割った時の余りが0」10の倍数は「10で割った時の余りが0」と言い換える事ができます。

  • 3の倍数の条件式: (a + b) % 3 == 0

  • 10の倍数の条件式: (a + b) % 10 == 0

最後に、各条件式を組み合わせて要件を満たす条件を作成します。
Pythonでは複数の条件式の結合に両方とも成立させる「and」またはどちら片方を成立させる「or」を使用します。今回の要件では両方とも成立させる必要があるので「and」を使用します。

  • 「奇数かつ3の倍数」: (a + b) % 2 != 0 and (a + b) % 3 == 0

  • 「偶数かつ10の倍数」: (a + b) % 2 == 0 and (a + b) % 10 == 0

繰り返し

繰り返しとは?

繰り返しとは、プログラムの中で同じ処理を何度も実行するための構文です。Pythonでは、forループwhileループを使って繰り返しを実現します。例えば、forループを使ってリストの各要素にアクセスしたり、whileループを使って特定の条件が満たされるまで処理を続けることができます。繰り返しを効果的に使うことで、コードを簡潔にし、同じ処理を手動で繰り返す必要がなくなります。よく聞く「無限ループ」などはwhileループの特性を利用すると実現できたりします。

繰り返しの使い方①

まずはforループの使い方です。「for  変数 in 繰り返し回数:処理内容①:」のようにコーディングします。このとき、末尾に付ける「:」の付け忘れや、実行される処理の記載場所(インデント)が正しくないとエラーになるので注意が必要です。

# その1:0~9までの数字を出力する。
for count in range(10): 
    print(count)

# その2:リスト内の要素を順番に出力する。
human = [160, 25, "太郎", "東京都", "男"]
for value in human:
    print(value)

# その3:リスト内の要素を順番に出力する。
human = [160, 25, "太郎", "東京都", "男"]
for index in range(len(human)): 
    print(human[index])

先ほどのコードについて解説していきます。

その1のコードは、range(10)で「0から始まり、10未満」の整数列を生成します。つまり、0, 1, 2, 3, 4, 5, 6, 7, 8, 9の10個の数字が生成されます。ここで生成された数字が1つずつcountに格納されていき、格納されたcountをprint()で表示しています

その2のコードは、リスト:human内の要素が1つずつvalueに格納されていき、格納されたvalueをprint()で表示しています。

その3のコードは、len(human)でリストの長さ(要素の数)を返してくれます。つまり、「5」という数字が返されrange(5)という形になります。
ここで「その1」のコードと同じように「0~4」までの数字がindexに格納されていき、human[index]という形でリストの要素を取得し、print()で表示しています。

繰り返しの使い方②

次はwhileループの使い方です。「while  条件式:処理内容①:」のようにコーディングします。このとき、末尾に付ける「:」の付け忘れや、実行される処理の記載場所(インデント)が正しくないとエラーになるので注意が必要です。

count = 0

# count5 未満の時は、処理を続ける
while count < 5:
  count += 1  
  if count == 3:      # count3 のときに処理を中断する
    break
  print(count)

先ほどのコードについて解説していきます。

このコードは、1から5未満の数字を順に表示し、countが3になったときにループを中断します。詳しく見てみましょう。
まず、count = 0で使用する変数の初期化を行います。次にcount < 5という条件式を満たす場合(条件に一致する場合)にprint()でcountを表示しています。ただし、countが3の場合は表示を行わずにbreak(ループを終了)しています。

このwhileを使用する際は「無限ループ」に気を付けないといけません。
先ほどのコードでcount += 1(countに1を加算)という処理を行っているのですが、この処理がないと、countが永遠と「0」のままとなってしまい、count < 5という条件が永遠と満たされ続けてしまい処理が終わらなくなってしまいます。whileループを使用する際はカウントアップを忘れずに行うようにしましょう。

関数

関数とは?

関数とは、特定の処理を1つの塊として定義したものになります。プログラムの中で何度も行うような処理を関数としてまとめる事で、同じ処理を何度もコーディングする事なく、関数を呼び出す事で完結できるようになります。また、この関数には「戻り値」が発生する関数と発生しない関数が存在します。

以下のイメージを見ていきましょう。
身近に存在する自動販売機で関数を例えていきます。
まず、自動販売機とは「お金をいれて、ボタンを押すと飲み物が出てくる」という一連の処理が決まっています。
この自動販売機を関数とすると、自動販売機で処理を行うために必要な「お金」の事を引数、処理の結果、得られる飲み物の事を戻り値といいます。

関数のイメージ

関数の使い方①

まず、戻り値が存在しない関数の使い方ですが、「def 関数名(引数1, 引数2,,,,,): 処理内容」という形でコーディングします。このとき、末尾に付ける「:」の付け忘れや、処理の記載場所(インデント)が正しくないとエラーになるので注意が必要です。

def vending_machine(money):
    if money == 150:
        print("コーラです。")
    elif money == 120:
        print("お茶です。")

# 関数を呼び出す
vending_machine(150)    -------(1)
vending_machine(120)    -------(2)

先ほどのコードについて解説していきます。

関数に渡された変数:moneyの値が「150」の場合に「コーラです。」、「120」の場合に「お茶です。」というメッセージを表示する処理が塊となり、関数名:vending_machineに定義されています。
vending_machine(引数に渡す値)の形で定義した関数を使用しています。
(1)の場合は「コーラです。」(2)の場合は「お茶です。」と表示されます。

関数の使い方②

次は、戻り値が存在する関数の使い方ですが、「def 関数名(引数1, 引数2,,,,,): 処理内容 return 戻り値」という形でコーディングします。このとき、末尾に付ける「:」の付け忘れや、処理の記載場所(インデント)が正しくないとエラーになるので注意が必要です。

def vending_machine(money):
    if money == 150:
        drink = "コーラ"
    elif money == 120:
        drink = "水"
    return drink 

# 関数を呼び出す
purchased_item = vending_machine(150)
print(f"購入したのは{purchased_item }です。")    -------(1)
purchased_item = vending_machine(120)
print(f"購入したのは{purchased_item }です。")    -------(2)

先ほどのコードについて解説していきます。

基本的には、「関数の使い方①」で説明した内容と同じです。異なる部分としては、「return 戻り値」とすることで関数内で処理された結果を返すようにしている部分と、関数の呼び出し元で「変数 = 関数(引数)」とすることにより、関数から受け取った戻り値を表示できるようになっている部分です。
(1)の場合は「購入したのはコーラです。」(2)の場合は「購入したのは水です。」と表示されます。

まとめ

Pythonの条件分岐、繰り返し、関数はプログラムの制御構造を柔軟にする重要な要素であり、条件に応じた処理や繰り返し処理、再利用可能なコードの組み立てが可能となります。これらの要素を理解し、効果的に活用することで、プログラムの作成やメンテナンスがより効率的に行えるようになります。


この記事が気に入ったらサポートをしてみませんか?