嵌套循环
本课属于 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 只会停止内层循环:外层循环会继续执行下一次迭代。
挑战
简单程序会读取两个整数: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())
# 外层循环:每行迭代一次
# 内层循环:每列添加一个星号
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: GDScript 在线编译器