首页 > 解决方案 > 三角数字模式 | 富吧

问题描述

我正在尝试使用以下代码创建以下模式

7
4 8
2 5 9
1 3 6 10
def createpattern(n=4,max_val=10):
    pattern = []
    for x in range(1,n+1):
        temp = []
        step = 2
        val = x
        bool_flag = 1
        while bool_flag == 1:
             temp += [val]
             if val == max_val:
                 print('----->')
                 bool_flag = 0
                 print('before break')
                 break
             else:
                val = val + step
                step += 1

        print('after break')
        print(temp)
        max_val = max_val - 1
        pattern.append(temp)

while 循环下的中断按预期工作

但是,我能够生成第一行,for 循环中的范围没有移动到它停留在 1 的下一个迭代值。

我尝试在 append 之后在末尾添加 continue ,但是循环仍然卡住。

我无法找出纠正上述嵌套循环的方法,理想情况下它应该移动到我无法弄清楚原因的下一个迭代值

任何线索都会有所帮助

标签: pythonalgorithmfor-loopwhile-loop

解决方案


当使用默认参数调用函数并在调试器中查看它时,在第二次迭代中它会产生[2, 4, 7, 11, 16 ...并永远持续下去。因为这些值都不等于 max_val,val == max_val所以永远不会为真。将其更改为 后if val >= max_val:,我得到以下输出:

----->
before break
after break
[1, 3, 6, 10]
----->
before break
after break
[2, 4, 7, 11]
----->
before break
after break
[3, 5, 8]
----->
before break
after break
[4, 6, 9]

推荐阅读