はじめに
注意点などはこちらを参照してください。
繰り返し処理
歴史は繰り返される。
単純なプログラムも繰り返させよう。
for inによるループ処理
単純な繰り返しの処理。
for カウンタ変数 in 繰り返す範囲:
繰り返し処理
※ コロンを忘れぬようお気をつけて
例
for i in range(3):
print("hello world")
============
※ 実行結果
hello world
hello world
hello world
============
繰り返す範囲の range 関数
range 関数は引数に指定した開始数から終了数までの連続した数値を要素として持つ range 型のオブジェクトを作成する。
※ range(a,b,x):a に指定した数値から順に b に指定した数値だけ足していき、 x に指定した数値を超えない範囲までの連続した数値を要素として持つオブジェクトを作成。
・a,x は省略可能。そうした場合 a = 0、x = 1 となる。
range(5)
# 0 1 2 3 4
range(0, 5)
# 0 1 2 3 4
range(4,7)
# 4 5 6
range(0, 5, 1)
# 0 1 2 3 4
range(0, 10, 2)
# 0 2 4 6 8
range(10, 0, -1)
# 10 9 8 7 6 5 4 3 2 1
range(0, -8, -2)
# 0 -2 -4 -6
range関数で指定してみる
for i in range(6,11): # 6, 7, 8 ... 11
print("Hello World:" + str(i)) # 後ろに数値を表示させる
print("last " + str(i)) # 確認用
============
※ 実行結果
Hello World:6
Hello World:7
Hello World:8
Hello World:9
Hello World:10
last 10
============
数値を繰り返す
数値も繰り返すことができる。
for i in range(10):
print(i)
============
※ 実行結果
1
2
3
4
5
6
7
8
9
============
(例題)1月から12月まで表示する
for i in range(1,13):
print(str(i) + "月")
============
※ 実行結果
1月
2月
3月
4月
5月
6月
7月
8月
9月
10月
11月
12月
============
while による繰り返し処理
条件式が成立している間、何度も繰り返す処理。
カウンタ変数や条件式は自分で用意する必要がある。
# while 条件式:
# 繰り返し処理
# カウンタ変数を更新
※ コロンを忘れぬようお気をつけて
例
数値を足していき指定した数以下、ないしは指定した数以上になるまで繰り返す。
i = 1 # カウンタ変数の初期化
while i <= 10: # iが10以下なら実行(1,2,3,4...10)
print(i) # 繰り返し処理
i = i + 1 # カウンタ変数を更新。i = i + 1 で10になるまで繰り返す
print("Next:" + str(i)) # Next: 11
print("Last:" + str(i))
※ カウンタ変数の更新文がないと無限ループと化す(「i = i + 1 」の文)
カウンタ変数の更新式(代入演算子)に関して
演算子 | 例 | 意味 | 別の書き方 |
---|---|---|---|
+= | i += 1 | 変数iの値を1増加させる。 | a = a + 1 |
-= | i -= 1 | 変数iの値を1増加させる。 | a = a - 1 |
例題
5から15まで表示
i = 5
while i <= 10:
print(i)
i += 1
============
※ 実行結果
5
6
7
8
9
10
============
5から1までカウントダウン
i = 5
while i >= 1:
print(i)
i -= 1
============
※ 実行結果
5
4
3
2
1
============
モンスターのHPが0になるまで攻撃する
import random
hp = 30
while hp > 0:
hit = random.randint(1,10)
print("スライムに" + str(hit) + "のダメージを与えた!")
hp -= hit
print("スライムを倒した")
============
※ 実行結果(例)
スライムに2のダメージを与えた!
スライムに9のダメージを与えた!
スライムに7のダメージを与えた!
スライムに8のダメージを与えた!
スライムに4のダメージを与えた!
スライムを倒した
============
体力が完全回復するまで繰り返す
import random
hp = 1
while hp <= 150:
kusa = random.randint(10,30)
print("薬草を使ってHPを" + str(kusa) + "回復した。" + "現在のHP:" + str(hp))
hp += kusa
print("体力が完全に回復した")
============
※ 実行結果(例)
薬草を使ってHPを18回復した。現在のHP:1
薬草を使ってHPを15回復した。現在のHP:19
薬草を使ってHPを29回復した。現在のHP:34
薬草を使ってHPを15回復した。現在のHP:63
薬草を使ってHPを18回復した。現在のHP:78
薬草を使ってHPを12回復した。現在のHP:96
薬草を使ってHPを15回復した。現在のHP:108
薬草を使ってHPを14回復した。現在のHP:123
薬草を使ってHPを14回復した。現在のHP:137
体力が完全に回復した
============