Menu
CoddyTech

ネストしたループ

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は内側のループだけを停止します。外側のループは次の反復に進みます。

challenge icon

チャレンジ

簡単

このプログラムは、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つ追加する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ