ネストしたループ
CoddyのGDScriptジャーニー「基礎」セクションの一部。レッスン 49/92。
入れ子のループとは、別のループの中にあるループです。外側のループが1回繰り返されるたびに、内側のループはすべての反復を実行します。
for i in range(3):
print("Outer: ", i)
for j in range(2):
print(" Inner: ", j)Outer: 0
Inner: 0
Inner: 1
Outer: 1
Inner: 0
Inner: 1
Outer: 2
Inner: 0
Inner: 1内側のブロックは2段階インデントされています。合計で3 x 2 = 6回実行されます。
2つのループには異なる変数名が必要です。別のfor iの中にfor iと書くとエラーになり、プログラムの実行前に報告されます。
入れ子になったループは、行と列を扱うときに便利です。print()は常に行末で改行するため、星印の行を出力するには、まず文字列に組み立て、内側のループが終わってから一度だけ出力します。
for row in range(2):
var line := ""
for col in range(3):
line += "*"
print(line)***
***外側のループは行ごとに1回実行され、内側のループは列ごとに星を1つ追加します。内側のループ内のbreakは内側のループだけを停止します。外側のループは次の反復に進みます。
チャレンジ
簡単このプログラムは、2つの整数 rows と cols を読み込みます。
ネストしたループを使って、rows 行の長方形を出力します。各行には cols 個の星(*)を表示します。
入力が 3 と 4 の場合、出力は次のとおりです。
****
****
****自分で試してみよう
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
# 外側のループ: 行ごとに1回繰り返す
# 内側のループ: 列ごとに星を1つ追加する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ