嵌套循环
本课属于 Coddy Swift 学习旅程的“基础知识”单元。第 49 课,共 86 课。
嵌套循环就是一个循环里面还有另一个循环。外层循环每迭代一次,内层循环都会完成所有迭代。
let rows = 3
let cols = 2
for row in 1...rows {
for col in 1...cols {
print("Row \(row), Col \(col)")
}
}
// 输出:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2对于 row 的每个值,内层循环都会重新开始,并遍历 col 的所有值,从 1 到 cols。所以,当 rows = 3 且 cols = 2 时,内部的代码总共会运行 6 次(3 × 2)。rows 和 cols 不会改变:它们只用于告诉循环何时停止。
嵌套循环通常用于处理类似网格的结构或生成图案。
下面是一个示例,用星号打印一个简单的矩形:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // 换到下一行
}
// 输出:
// ****
// ****terminator: ""会阻止print添加换行符,因此星号会显示在同一行。内层循环结束后,print("")会移到下一行。
挑战
简单从输入中读取两个整数:rows 和 cols。使用嵌套循环打印一个数字网格,其中每个单元格显示其行号与列号的乘积。
你将收到以下输入:
- 第一行:行数(例如
"3") - 第二行:列数(例如
"4")
要求:
- 使用外层循环遍历行(从 1 到
rows) - 使用内层循环遍历列(从 1 到
cols) - 打印当前行号与列号的乘积
- 同一行中的值之间用空格分隔
- 每行都单独占一行
提示:使用 terminator: " " 让值显示在同一行,然后在内层循环之后使用 print("") 换到下一行。
例如,如果 rows 是 3,且 cols 是 4,输出应为:
1 2 3 4
2 4 6 8
3 6 9 12 为每个循环使用一个新的计数器(例如,用 row 表示行,用 col 表示一行中的数字),并将它与 rows 或 cols 进行比较。不要更改 rows 和 cols 本身:每一行都需要再次使用 cols。
亲手试试
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO:在下方编写你的代码
// 使用嵌套循环打印乘法表格
// 外层循环:遍历各行(从 1 到 rows)
// 内层循环:遍历各列(从 1 到 cols)
// 打印 row * column 的乘积
// 使用 print(..., terminator: " ") 让值保持在同一行
// 内层循环结束后,使用 print("") 换到下一行这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Swift 在线编辑器