基本三構造

基本三構造とは

プログラムでは「順次処理」「条件分岐」「繰り返し」の3つの動きがあり、 基本三構造といいます。

  • 順次処理
  • 条件分岐
  • 繰り返し

順次処理

順次進行はソースコードを上から順に処理する構造で、プログラムの最も基本的な動きです。今までプログラミングした通り、上から順に「処理1」「処理2」とプログラムが記述されていたら、「処理1」「処理2」と処理されます。

条件分岐

条件分岐は「もし◯◯だったら」「そうでなければ」といった条件によって処理を分岐します。

  • 所持金が足りていれば購入、そうでなければ購入できない
  • もし移動距離が1km未満だったら徒歩、1km-5km未満だったら自転車、5km以上だったら電車

「true」「false」で判別

条件の結果「Yes」「No」と判別された場合、プログラムではboolean型のtrue、falseで分岐します。

if文

if文は条件に応じて特定のコードブロックを実行するための制御構造です。条件がTrueの場合にコードブロックが実行され、Falseの場合はスキップされます。

python
if 条件:
    # 条件がTrueの場合に実行
    処理

if文で処理

所持金が価格以上だったらメッセージを表示します。

condition.py
price = 300
money = 500
message = ""

if money >= price:
    message = "お買い上げありがとうございました"
print(message)
Trueの場合
結果
お買い上げありがとうございました
Falseの場合
結果

else文

if else文は、条件がFalseだったときも処理できます。

python
if 条件:
    # 条件がTrueの場合に実行
    処理
else:
    # 条件がFalseの場合に実行
    処理

else文で処理

所持金よってメッセージを分岐します。

condition.py
price = 300
money = 500
message = ""

if money >= price:
    message = "お買い上げありがとうございました"
else:
    message = "購入金額が足りません"
print(message)
Trueの場合
結果
お買い上げありがとうございました
Falseの場合
結果
購入金額が足りません

else文

else文は条件がFalseのときに処理することができます。

if 条件:
    処理
elif 条件:
    処理
else:
    処理

else if文で処理

condition.py
score = 100

if score >= 90:
    print("優")
elif score >= 70:
    print("良")
elif score >= 50:
    print("可")
else:
    print("不可")
90以上の場合
70以上の場合
50以上の場合
それ以外の場合
不可

インデントとネスト

インデント

インデントとは

インデントとは プログラムでコードブロックを表すためにインデント(字下げ)が使用されます。インデントはコードの階層構造を示すために使われ、同じインデントレベルのコードは同じブロックに属します。

インデントの重要性

Pythonの構文はインデントがとても重要です。 正確なインデントを使用しないと、Pythonではエラーが発生します。

インデントタブ

インデントタブ(幅)は4つまたは2つのスペースを利用され、一貫したスタイルを使用することが重要です。Pythonでは4つのスペースが推奨され、キーボードのTabキーで入力します。

python
price = 300
money = 500
message = ""

if money >= price:
# インデントがないため構文エラー
message = "お買い上げありがとうございました"
else:
# インデントがないため構文エラー
message = "購入金額が足りません"
print(message)
インデントエラー

インデントの可読性

Pythonに限らず、他の言語でもインデントを使用したコードは可読性を高め、コードの理解を容易にします。

ネストとは

同じ処理を繰り返するようなコードをネストといいます。例えば、if文をネストすると複雑な条件を処理できます。

if 条件1:
  # 条件1が「true」だったときの処理
  if 条件2:
     # 条件2が「true」だったときの処理
  else:
     # 条件3が「false」だったときの処理
else:
  # 条件1が「false」だったときの処理

ネストで処理

入力データがマイナスの場合の条件を付け加えます。

condition.py
price = 300
money = 500
message = ""

if (money > 0):
    if money >= price:
        message = "お買い上げありがとうございました"
    else:
        message = "購入金額が足りません"
print(message)
condition.py
score = 100

if (score > 0):
    if score >= 90:
        print("優")
    elif score >= 70:
        print("良")
    elif score >= 50:
        print("可")
    else:
        print("不可")

ネストの問題

ネストが連続するコードは、プログラムのアルゴリズムに問題がある場合があります。ネストは必要最低限にするように注意しましょう。

else ifが連続

if year == 2000:
	# 処理
elif year == 2001:
	# 処理
elif year == 2002:
	# 処理
elif year == 2003:
	# 処理
...

ifのネストが連続

isFine = True
isMorning = False
isHoliday = True

if isFine:
    # 処理
	if isMorning:
        # 処理
		if isHoliday:
			# 処理

論理演算

論理演算子で条件分岐

条件を論理演算で処理します。

  • 価格が「0」より大きい
  • 所持金が「0」より大きい
condition.py
price = 300
money = 500
message = ""

if money > 0 and price > 0:
    if money >= price:
        message = "お買い上げありがとうございました"
    else:
        message = "購入金額が足りません"
else:
    message = "入力が間違っています"
print(message)

演習

問題1

価格、個数、所持金を任意の数で設定し、合計金額が所持金によって購入するメッセージを変えてみましょう。

Python超入門