複合文の使い方(if_while_for)
目次
用語説明
- クローズ(clause)
- 処理ブロックのこと。
- ヘッダ(header)
- 条件式を記載する部分のこと。
- エクスプレッション(expression)
- 条件式のこと。
- ここではブール演算(True or False)の式と理解しておけばよい。
- スイート(suite)
- ここでは「条件式が True の時に実行される処理のこと」と理解しておけばよい。
便宜上記載したが、それぞれの名前は覚えなくてもたぶん不自由しない。
# ------------------------------ clause(start)
# header
if a < b: # expression
# suite
print('aはbより小さいです。')
# ------------------------------ clause(end)
# ------------------------------ clause(start)
# header
elif a > b: # expression
# suite
print('aはbより大きいです。')
# ------------------------------ clause(end)
if 文
条件式の実行結果が True(条件を満たしている)時に、そのスイートを実行する。
条件式は、戻り値が bool 型であれ何でも使える。
サンプルコード(if 文)
def study_if_statement(a, b):
print("a = {}, {}".format(a, type(a)))
print("b = {}, {}".format(b, type(b)))
if type(a) == type(b):
if type(a) is str:
if a == b:
print("'a' and 'b' are the same string.")
else:
print("'a' and 'b' are different strings.")
elif type(a) is int:
if a < b:
print("'a' is smaller than 'b'.")
elif a > b:
print("'a' is larger than 'b'.")
elif a == b:
print("'a' and 'b' are equal.")
else:
print("Types 'a' and 'b' are other than 'str' and 'int'.")
else:
print("'a' and 'b' are different types.")
動作確認コード
print("test_01")
a = "apple"
b = "orange"
study_if_statement(a, b)
print("end")
print("test_02")
a = 10
b = "orange"
study_if_statement(a, b)
print("end")
print("test_03")
a = 10
b = 20
study_if_statement(a, b)
print("end")
実行結果
test_01
a = apple, <class 'str'>
b = orange, <class 'str'>
'a' and 'b' are different strings.
end
test_02
a = 10, <class 'int'>
b = orange, <class 'str'>
'a' and 'b' are different types.
end
test_03
a = 10, <class 'int'>
b = 20, <class 'int'>
'a' is smaller than 'b'.
end
while 文
条件式の実行結果が True(条件を満たしている)の間は、延々とループして処理を続ける。
主に処理回数が不定の時に使用する。
サンプルコード(while 文)
def study_while_statement():
import random
word = [
'リンゴ',
'ゴリラ',
'ラッコ',
'コアラ',
'ラジオ',
]
i = random.randint(0, len(word)-1)
count = 1
# NOTE: リンゴが出るまでループする(リンゴ以外の時はTrueなので)
while word[i] != "リンゴ":
i = random.randint(0, 3)
print(count, '回目:', word[i])
count += 1
print(count, "回目に引き当てました。終了します。")
実行結果(例)
1 回目: コアラ
2 回目: リンゴ
3 回目に引き当てました。終了します。
for 文
決まった回数だけ処理をループしたい時に使用する。
構文
for 変数 in オブジェクト:
実行する処理
break
実行中のループを抜ける。
continue
実行中のループの先頭に戻る。
for 文 に関連する range 関数の説明
range(stop)
動作の確認
print(list(range(3)))
実行結果
[0, 1, 2]
range(start, stop)
動作の確認
print(list(range(10, 13)))
実行結果
[10, 11, 12]
range(start, stop, step)
動作の確認
print(list(range(0, 10, 3)))
実行結果
[0, 3, 6, 9]
step にはマイナスも使用できる。
print(list(range(10, 0, -3)))
実行結果
[10, 7, 4, 1]
便利な機能
in の後にリストを指定すると、1要素ずつデータを取り出してくれる。
word = ['リンゴ', 'ゴリラ', 'ラッパ']
for name in word:
print(name)
実行結果
リンゴ
ゴリラ
ラッパ
サンプルコード(for 文)
# study of "for statement"
import random
def create_random_number_list():
"""Create a list with 10 random numbers.
Returns:
list: Random numbers.
"""
random_number_list = []
for n in range(10):
generat = random.randint(0, 99)
random_number_list.append(generat)
return random_number_list
def is_even_number(num: int):
"""Determine even and odd numbers.
Args:
num (int): Any number.
Returns:
bool: Even is True. Odd is False.
"""
if num % 2 == 0:
return True
else:
return False
def confirm_even_odd(random_number_list):
"""Determine even or odd numbers and output.
Args:
random_number_list (list): Any list of numbers.
"""
for index in range(len(random_number_list)):
if is_even_number(random_number_list[index]) is True:
print(random_number_list[index], ": 偶数(Even)")
continue
else:
print(random_number_list[index], ": 奇数(Odd)")
def even_break(random_number_list):
"""'break' on the first even number.
Args:
random_number_list (list): Any list of numbers.
"""
for index in range(len(random_number_list)):
if is_even_number(random_number_list[index]) is True:
print("First even number found:", random_number_list[index])
print("index:", index)
found = True
break
else:
found = False
if found is False:
print("There was no odd number.")
def study_for_statement():
random_number_list = create_random_number_list()
confirm_even_odd(random_number_list)
even_break(random_number_list)
if __name__ == "__main__":
study_for_statement()
実行結果(例)
51 : 奇数(Odd)
73 : 奇数(Odd)
65 : 奇数(Odd)
99 : 奇数(Odd)
50 : 偶数(Even)
1 : 奇数(Odd)
93 : 奇数(Odd)
10 : 偶数(Even)
95 : 奇数(Odd)
89 : 奇数(Odd)
First even number found: 50
index: 4
コードの補足説明
- 0~99のランダムな数字を10個生成してリストにまとめる。
- 生成した数字が偶数か奇数かを判定して表示する。
- リストの中身を先頭から確認して、最初に偶数が出現したのがリストの何番目かを表示する。
ちなみに、偶数、奇数の判定は、プログラミングの基礎らしいよ。