基本三構造
基本三構造とは
プログラムでは「順次処理」「条件分岐」「繰り返し」の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
価格、個数、所持金を任意の数で設定し、合計金額が所持金によって購入するメッセージを変えてみましょう。