我正在尝试使用for for for循环,其中内部循环与外部循环中的i具有相同的范围。这基本上就是我想要的,但(显然)它不起作用:
1:: RunMSWordMacro("correct")
RunMSWordMacro(name) {
GetWord().Run(name)
}
GetWord() {
if !hwnd := WinActive("ahk_class OpusApp")
hwnd := WinExist("ahk_class OpusApp")
ControlGet, ControlHwnd, Hwnd,, _WwG1, ahk_id %hwnd%
Return AccObjectFromWindow(ControlHwnd, -16).Application
}
AccObjectFromWindow(hWnd, idObject = 0)
{
static IID_IDispatch := "{00020400-0000-0000-C000-000000000046}"
, IID_IAccessible := "{618736e0-3c3d-11cf-810c-00aa00389b71}"
, OBJID_NATIVEOM := 0xFFFFFFF0, VT_DISPATCH := 9, h := DllCall("LoadLibrary", Str, "oleacc", Ptr)
VarSetCapacity(IID, 16), idObject &= 0xFFFFFFFF
DllCall("ole32\CLSIDFromString", Str, idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, Ptr, &IID)
if DllCall("oleacc\AccessibleObjectFromWindow", Ptr, hWnd, UInt, idObject, Ptr, &IID, PtrP, pAcc) = 0
Return ComObjEnwrap(VT_DISPATCH, pAcc, 1)
}
所以我想要发生的是,获得5个循环,其中第一个循环给出1个结果,第二个循环给出2个结果,等等。我不知道是否需要更多的澄清,但我试图在python中创建喝酒游戏的公共汽车,我需要这个循环金字塔轮。这样可能还是需要找到一种不同的方法来解决这个问题?提前谢谢。
修改
我正在寻找的结果是通过使用以下代码实现的:
num = 1
totalrow = range(5)
rownum = range(num)
for i in totalrow:
for x in rownum:
do stuff
num = num + 1
print (stuff)
这给了我生成的牌组中的15张牌。我希望有一个双循环,所以我可以分辨出每一排卡片之间的区别。现在我对输出不感兴趣,但是对于任何人来说,在答案中,smarx显示了几种打印结果的好方法。
答案 0 :(得分:2)
在进入外部$trip->getTripAddOns->add($tripAddOn)
循环之前,您只计算rownum
一次 - 但实际上在每次迭代期间您需要for
为不同的值。这意味着你需要计算一个新范围 in 循环。
做这样的事情:
rownum
这将以您要求的模式循环。
答案 1 :(得分:2)
for i in range(5):
for j in range(i):
print(j)
修改强>
考虑到你试图复制的游戏,你可能需要这样的东西:
for i in range(4):
for j in range(i + 1):
print(j, end=' ')
print()
# Output:
# 0
# 0 1
# 0 1 2
# 0 1 2 3
编辑2
或许这个:
for i in range(4):
print(' ' * i, end='')
for j in range(4 - i):
print(j, end=' ')
print()
# Output:
# 0 1 2 3
# 0 1 2
# 0 1
# 0