Menu
CoddyTech

嵌套循环

本课属于 Coddy GDScript 学习旅程的“基础知识”单元。第 49 课,共 92 课。

嵌套循环是一个循环嵌套在另一个循环中的结构。外层循环每迭代一次,内层循环就会运行完所有迭代:

var rows := 3
var cols := 2
for i in range(rows):
	print("Outer: ", i)
	for j in range(cols):
		print("  Inner: ", j)
Outer: 0
  Inner: 0
  Inner: 1
Outer: 1
  Inner: 0
  Inner: 1
Outer: 2
  Inner: 0
  Inner: 1

内部代码块缩进了两级。它总共运行 rows x cols = 3 x 2 = 6 次。每次外层循环运行时,j 都会重新从 0 开始,而 rows 和 cols 保持不变,只用于告诉循环何时停止。

这两个循环需要使用不同的变量名。在另一个 for i 中写 for i 是错误的,程序运行前就会报告这个错误。

嵌套循环适合处理行和列。print() 总会结束当前行,所以要打印一行星号,可以先把它拼接到字符串中,等内层循环结束后再打印一次:

for row in range(2):
	var line := ""
	for col in range(3):
		line += "*"
	print(line)
***
***

外层循环每行运行一次,内层循环每列添加一个星号。在内层循环中使用 break 只会停止内层循环:外层循环会继续执行下一次迭代。

challenge icon

挑战

简单

程序会读取两个整数:rows 和 cols。

使用嵌套循环打印一个星号(*)矩形,共有 rows 行,每行有 cols 个星号。

输入 3 和 4 时,输出为:

****
****
****

每个循环都使用一个新的计数器(例如,用 row 计数行,用 col 计数每行中的星号),并将它与 rows 或 cols 进行比较。不要更改 rows 和 cols 本身:每一行都需要再次使用 cols。

亲手试试

extends Node

func _ready():
	var rows := int(OS.read_string_from_stdin())
	var cols := int(OS.read_string_from_stdin())
	# 外层循环:每行迭代一次
	# 内层循环:每列添加一个星号
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: GDScript 在线编译器