9-1. for文の基本構文
Pythonのfor文は、任意のシーケンス型(文字列やリスト、タプルなど)の要素に基づいて反復を行います。反復の順番はシーケンス中に要素が現れる順番になります。C言語のように、反復の始まりの数と終わりの数、ステップ数などを指定する訳ではない点に注意してください。反復処理を行うプログラムブロックは、半角スペースを使ったインデントで行頭をずらすことて設定します。
a="Hiroshima"
for i in a:
print(i)
a=[1, 2, 3, 4, 5]
for i in a:
print(i)
▼プログラミングセル9-1.
a=("a", "b", "c", "d", "e")
for i in a:
print(i)
9-2. for文におけるインデントの注意
反復するプログラムブロック部分の行頭のインデントがずれないように注意してください。
a=[1, 2, 3, 4, 5]
for i in a:
b = i**2
print(b)
▼プログラミングセル9-2.
a=[1, 2, 3, 4, 5]
for i in a:
b = i**2
print(b) # エラー部分
9-3. for文におけるbreakによる反復の終了
for文の反復処理から途中で止めるにはbreakを利用します。breakを利用した場合、for文から抜け出るので注意してください。
▼プログラミングセル9-3.
a=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in a:
if i == 5:
break
print("i = ", i)
print("for文の終了")
9-4. continueによるfor文の反復のスキップ
for文の反復処理の中である処理をスキップしたい場合にはcontinueを利用します。breakとは異なり、continueではfor文の反復の中の1つの処理のみスキップしてfor文の反復処理に戻る点に注意してください。
▼プログラミングセル9-4.
a=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in a:
if i == 5:
continue
print("i = ", i)
print("for文の終了")
9-5. for文の入れ子(ネスト)
for文の中にfor文を記述して入れ子(ネスト)の状態にできます。
▼プログラミングセル9-5.
a=[1, 2, 3, 4, 5]
b=["a", "b", "c", "d", "e"]
for i in a:
print("i = ", i)
for j in b:
print(" j = ", j)
print("for文の終了")
9-6. range関数とfor文
range関数は、連続した数値を要素として持つシーケンスになります。range関数のシーケンスはrange型になります。range関数では、最初の数(省略した場合は0)、終了の数(指定した数は含まない)、ステップ数などを設定することができます。for文の反復処理の源泉として利用される機会が多いので注意してください。
a=range(5)
for i in a:
print(i)
print(type(a))
a=range(2, 5)
for i in a:
print(i)
a=range(0, 5, 2)
for i in a:
print(i)
▼プログラミングセル9-6.
a=range(5, 0, -1)
for i in a:
print(i)
9-7. while文の基本構文
while文は条件が成立する間は反復を実施します。条件が成立しなくなるように設定したり、反復を終了したいときにbreakを記述したりする必要がある点に注意してください。終了がうまく設定されていない場合、反復処理が終わらない無限ループになるので注意しましょう。
a=10
while a > 0:
print(a)
a-=1
print("while文の終了")
▼プログラミングセル9-7.
a="Hiroshima"
b=0
while b < len(a):
print(a[b])
b+=1
print("while文の終了")
9-8. while文におけるインデントの注意
反復するプログラムブロック部分の行頭のインデントがずれないように注意してください。
a=10
while a > 0:
print(a)
a-=1
print("while文の終了")
▼プログラミングセル9-8.
a=10
while a > 0:
print(a)
a-=1 # エラー箇所
print("while文の終了")
9-9. while文におけるbreakによる反復の終了
while文の反復処理から途中で止めるにはbreakを利用します。breakを利用した場合、while文から抜け出るので注意してください。
▼プログラミングセル9-9.
a=10
while a > 0:
if a == 5:
break
print("a=", a)
a-=1
print("while文の終了")
9-10. continueによるwhile文の反復のスキップ
while文の反復処理の中である処理をスキップしたい場合にはcontinueを利用します。breakとは異なり、continueではfor文の反復の中の1つの処理のみスキップしてwhile文の反復処理に戻る点に注意してください。
▼プログラミングセル9-10.
a=10
while a > 0:
if a == 5:
a-=1 # この行がない場合は無限ループになる点に注意
continue
print("a=", a)
a-=1
print("while文の終了")
9-11. while文の無限ループ
while文を終了する設定が正しくない場合(条件が常に成立する場合)は無限ループになりプログラムが止まりません。
※Webブラウザの挙動がおかしくなった場合はページを閉じて開き直してください。
▼プログラミングセル9-11.
a=10
while a > 0:
if a == 5:
# a-=1がないので無限ループになってしまいます
continue
print("a=", a)
a-=1
print("while文の終了")
9-12. while文の入れ子(ネスト)
while文の中にwhileを記述して入れ子(ネスト)の状態にできます。
▼プログラミングセル9-12.
a=5
while a > 0:
print("a=", a)
a-=1
b=5
while b > 0:
print(" b=", b)
b-=1
print("while文の終了")
9-13. while-else文
while-else文では、whlie文を正常終了したとき(while文の条件が成立しなくなって反復が終了するとき)の処理をelse文で明記します。
▼プログラミングセル9-13.
a=10
while a > 0:
print(a)
a-=1
else:
print("elseの処理")
print("while文の終了")
breakでwhlie文を抜け出た場合はelse文の処理を実施しません。
▽サンプルプログラム9-14. break時のwhile-else文の処理a=10
while a > 0:
if a == 5:
break
print(a)
a-=1
else:
print("elseの処理")
print("while文の終了")
▼プログラミングセル9-14.
breakとは異なり、continueでwhlie文を抜け出た場合はelse文の処理が実施される点に注意しましょう。
▽サンプルプログラム9-15. cotinue時のwhile-else文の処理a=10
while a > 0:
if a == 1:
a-=1
continue
print(a)
a-=1
else:
print("elseの処理")
print("while文の終了")
▼プログラミングセル9-15.
問題
以下の問題の解答となるプログラムを作成しましょう。
*
**
***
****
*****