python - 三角数字模式 | 富吧
问题描述
我正在尝试使用以下代码创建以下模式
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 ,但是循环仍然卡住。
我无法找出纠正上述嵌套循环的方法,理想情况下它应该移动到我无法弄清楚原因的下一个迭代值
任何线索都会有所帮助
解决方案
当使用默认参数调用函数并在调试器中查看它时,在第二次迭代中它会产生[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]
推荐阅读
- node.js - Mojang API 在 unix 时间戳处获取播放器的 UUID(api 不起作用?)
- c# - 使用 dotnet core \ c# 删除 GCP Spanner Instance
- reactjs - useContext 返回未定义的 nextjs
- c# - 使用 MS Graph C# SDK 的分页功能,我是否能够获取 NextLink 并稍后恢复通话?
- angular - 如何在输入字段中突出显示一些具有颜色背景的特定文本 - 角度
- java - Groovy 3.0.5 与 Mockito 3.6.28 不兼容吗?模拟不可用
- azure - Azure Azcopy - 我可以只复制没有文件的文件夹吗?
- r - 如何根据组内的前一行值转换后续行值?
- visual-studio - VS2019 .csproj 删除或修改链接内容文件
- eclipse - PyDev 和 Eclipse - 有没有办法在悬停时显示函数文档?