如何用嵌套for循环实现6×7网格打印并限制数值到n+41?
修正你的Python网格打印程序
你的代码出现无限循环的原因是不必要的三层嵌套循环,并且在循环中修改了输入的n变量,导致循环逻辑完全失控:
- 外层
for r in range(6)本应控制6行,但你额外嵌套了for c in range(7)和最内层的for i in range(n, n+7),这会让每行被重复打印7次,同时n持续自增永远停不下来。 - 你不需要修改原始的
n值,应该通过行号和列号计算每个位置的数值。
下面是符合要求的修正代码,使用嵌套for循环实现6×7网格打印:
n = int(input("Enter a number between -6 and 2:\n")) # 输入验证:确保n在指定范围内 if -6 < n < 2: # 外层循环控制行数(共6行) for row in range(6): # 内层循环控制每行的7个数字 for col in range(7): # 计算当前位置的数值:起始n + 行偏移(每行7个) + 列偏移 current_num = n + row * 7 + col print(current_num, end=" ") # 每行结束后换行 print() else: print("Error: Number must be between -6 and 2.")
代码说明:
- 用
int()替代eval()更安全,避免执行恶意输入 - 外层
row循环遍历0到5(共6行),内层col循环遍历0到6(共7列) - 通过
row *7计算当前行的起始偏移,加上col得到当前位置的准确数值,全程不修改原始的n - 增加了输入不合法时的提示信息
测试输入-2时,输出和你期望的完全一致:
Enter a number between -6 and 2: -2 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
内容的提问来源于stack exchange,提问作者miamiamia
相关产品推荐
相关产品推荐

