1
for l in range(1,len(S)-1):
    for i in range(1,len(S)-l):
        j=i+l
        for X in N:
            max_score = 0
            args = None
            if j==2:
                print j
            for s in range(i,j-1):#s is for split point
                if j==2:
                    print j
                for W in probBiNonterDic.keys():#y<==>  X->YZ
                    if j==2:
                        print j

如您所见,如果 j==2 在 X 的第一个块中:打印 2,但是在 s 和 W 的第二个块中,如果 j==2 不打印 2...为什么会改变 j 值

4

2 回答 2

1

看起来您的问题出在第二个for循环上。您正在尝试遍历从 开始的范围i --> j -1,但是因为您在开始时增加了 的值j,所以这与编写 相同range(i, i)。也许你可以在循环j的底部增加。for i in range(1, len(s) - 1)

于 2013-04-14T03:36:20.483 回答
1

因为 l 和 i 循环都开始一个 1 和 j = i + l。此时 j == 2 并打印出来。当您尝试在 s 循环中从 1 循环到 1 时,您实际上甚至不会循环一次迭代,并且下一次进入 s 循环时 j 不再等于 2。

>>> for x in xrange(1,1):
...     if True:
...         print "hi"
>>> 
于 2013-04-14T03:45:14.893 回答