今日は「条件分岐(if文)」の応用と、「繰り返し処理(while文・for文)」、さらにリスト・range関数の扱いについて学びました。
✅ 今日の主な内容
- 条件分岐の復習 _ if elif else
- list型とrange()関数 _ 反復可能オブジェクト
- while文、for文 _ 繰返し(ループ)の処理
- ループを強制的に抜ける _ break continue
Python講座3日目
🔸 条件分岐の復習
📌 例題:気温と天気から服装を選ぶプログラム
# pythonmax_temperature = 25 #事前に条件を指定
is_raining = False#事前に条件を指定
if max_temperature <= 14:
print("ジャケットとセーター")
elif 15 <= max_temperature <= 24:
print("長袖シャツとジーンズ")
else:
print("Tシャツと短パン")
if is_raining:
print("傘を持っていきましょう")
ポイント
- if・elif・elseを上から順にみていき、条件式がTrueになった場合、ブロックの処理を行う。それ以降は、判定が実行されない。
- max_temperatuireのif文と、is_rainingのif文が別で動いている。
- if・elif・elseのブロックの処理で、今回は各ブロックにprint()関数を入れているが、各ブロックで例えばclothingなどの変数に文字列を定義するようにして、最後にまとめてprint()関数で出力内容をまとめるなどした方が、コードの可読性は上がるようにも思う。
🔸 while文(条件に応じて、処理を繰り返す)
# pythoni = 0 #①
while i < 5: #②
print("カウント:", i) #③
i += 1 #④
'''出力内容は以下の通り
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
'''
書き方は
while 条件式 :
(インデント)処理内容
処理内容
上から順に読んでいくと、
- ①変数 i に0を定義する。未定義だと、whileの条件式で判定ができない。変数に「0」や「’’」を定義することを初期化ともいう。
- ②
while 条件式:
と記載する。 今回は「 i が5より少ない場合、繰り返す」と読める - ③while文のブロックの処理1 「カウント:」と変数iの内容をprintする
- ④while文のブロックの処理2 変数iに1を足す この部分をカウンターと呼ぶ
- その後、再びwhileの条件式の判定に戻る
ポイント
- 初期化は重要! → 数値は
i = 0
、文字列はs = ''
など。このwhile文を記載するセル以外で、iを定義していることもあるため、初期化を必ず行う。 - 条件には
==
,!=
,<
,>=
など比較演算子やand
,or
など論理演算子も使える。
🔸 リスト(複数データの格納)
このあと出てくるfor文では、「反復可能オブジェクト」を構文内に組み込むことになる。その「反復可能オブジェクト」が、このlist型や次のrange関数となる。
#pythonfruits = ['りんご', 'みかん', 'ぶどう'] #一つの変数の中に、複数の要素を代入している
print(fruits[0]) # → 'りんご'
- []でリストの要素を指定することをインデックスという リストの最初の要素は[0]となるため注意 ※1がスタートではないことに注意
list.append(値)
→ リストの末尾に要素を追加list.insert(インデックスの番号, 値)
→ 指定位置に値を追加 格納ずみの値は末尾側にずれるlist.clear()
→ 全要素削除del list[index]
→ 指定要素削除- リスト内リストも可能 →
list = [ 1 ,2 ,[ 3 ,4 ]]
などindexする場合はlist[2][0]とすると3が帰ってくる
🔸 range関数と繰り返し
#pythonfor i in range(1, 6):
print(i)
'''以下が出力される
1
2
3
4
5
'''
range(start, stop, step)
→ 指定範囲の整数を生成(stopは含まない)range(3)
と書ける この場合stopに3が指定されていると認識され 0・1・2 が帰ってくる- 正確に書くなら
range(0,3)
となり「0から始まり、3つ目の整数までを羅列する→(0、1、2)」となる step
は整数を何個飛ばしで羅列するかを指定できる 無指定だとstep→0
- list型に変換も可能:
list(range(1, 6))
→[ 1, 2, 3, 4, 5 ]
が格納される
🔸 for文(構文内の反復可能オブジェクトの最後の要素まで自動で繰り返す)
#pythonpriority = ['中野', '新宿', '立川'] #変数「priority」に、反復可能オブジェクト(list型)を定義
for station in priority: #for構文 変数「station」にpriorityの要素を[0]から順に代入して
#要素ごとに、ブロックの処理を実行する
print(station) #ブロックの処理 変数「station」をprint()する
'''以下の内容を出力する
中野
新宿
立川
'''
for 変数 in リスト:
→ 各要素を順に処理- 要素数が増えても自動的に全て処理できるのがメリット
🔸 break / continue
🔹 break → 繰り返しを途中で終了
#pythontotal = 0
for i in range(10):
total += i
if total > 20:
break
print(i, total) # → 6, 21
for文のブロック処理の中で、iが増えていくが、ブロック内のif文でiが20より多ければbreakでforの繰り返しを抜け、iとtotalを出力する
🔹 continue → 条件に応じてスキップ
#pythontotal = 0
for i in range(10):
total += i
if total > 20:
continue
#continueを使う場合、continue以降のブロックの処理をスキップする。
#今回は書いていないため、あまり意味がない
print(i, total) # → 9, 45
continue以降のブロックの処理をスキップするが、forの繰り返し自体は継続して実行されているため、iとtotalはrange(10)まで加算されている
🔸 実践演習:好きな果物を入力して出力
#pythonfruits = [] #listの初期化
for i in range(5): #for文でrangeを指定することで、繰返しの回数を指定
fruit = input(f"{i+1}つ目の果物を入力してください: ") #変数fruitにユーザー入力を定義
fruits.append(fruit) #変数fruitに定義した内容を、リストfruitsに格納
for fruit in fruits:
print(fruit + "は美味しいです。")
input()
でユーザー入力を受け取って、append()
でリストに追加。- for文で、fruitsリスト内の要素を全て出力。
🔹 応用:終了という入力で終了する
#pythonfruits = [] #リストの初期化
#変数の初期化
fruit_name = ""
while fruit_name != "終了": #fruit_nameが「終了」でなければTrueなので、ループする
fruit_name = input("果物を入力してください: ") #ユーザーの入力を受け取る
if fruit_name != "終了": #入力が終了でなければ下の処理を行う
fruits.append(fruit_name) #入力をリストfruitsに格納
for fruit in fruits:
print(fruit + "は美味しいです。")
🧠 所感・学びメモ
- if文・while文・for文、どれも初期化と条件の使い方がキモ。
- 条件を間違えると、無限ループが発生してしまう。
print()
を1か所にまとめると、コード全体が見通しやすい。- ループから抜ける条件をつけるなら、とりあえず
break
を使っておくと簡単だが、場合によっては、while文の条件できちんと指定しておくほうが、可読性が高まることもある。 - 「リスト+繰り返し」は情報処理の基本形として超重要っぽい。
🔜 次回やる予定の内容
- whileの複合条件
- 様々なモジュールの利用
- エラーの対処
コメント