嵌套循环
本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 46 课,共 88 课。
你可以把一个循环放在另一个循环里,创建嵌套循环。外层循环每迭代一次,内层循环就会完整运行一遍,因此这种模式适合处理网格、表格或组合。
rows = 2
cols = 3
for i in 1..rows
for j in 1..cols
puts "i=#{i}, j=#{j}"
end
end这会输出 6 行。对于 i 的每个值,内层循环都会遍历 j 的所有值。
首先,i 是 1,而 j 依次取 1、2、3。然后,i 变成 2,j 再次依次取 1、2、3。rows 和 cols 始终不变:它们只用于告诉循环何时停止。
一个实用的例子是创建一个简单的乘法图案:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
end这会打印一个 3x3 的产品网格。print 会让值显示在同一行,而 puts "" 会在每行结束后换行。你也可以混合使用不同类型的循环,例如在 for 循环中使用 times 循环。
挑战
简单从输入中读取两个整数:
rows:行数cols:列数
使用嵌套循环,打印一个由星号(*)组成的矩形,尺寸由给定的值决定。每行应包含 cols 个星号,星号之间用空格分隔,并且每行单独占一行。
使用 print 打印一行中的星号,并在每行结束后使用 puts 移到下一行。
例如,如果输入是 3 和 4,输出应为:
* * * *
* * * *
* * * *如果输入是 2 和 5,输出应为:
* * * * *
* * * * *每行最后一个 * 后面没有空格。
每个循环都使用一个新的计数器(例如,用 row 表示行,用 col 表示一行中的星号),并将它与 rows 或 cols 进行比较。不要更改 rows 和 cols 本身:每一行都需要再次使用 cols。
亲手试试
# 读取输入
rows = gets.to_i
cols = gets.to_i
# TODO:在下面编写你的代码
# 用嵌套循环打印一个由星号组成的矩形
# 用 print 打印每行的星号,再用 puts 换行这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Ruby 在线编译器