python我的j值改变为s在范围内(i,j-1):j = 3但在范围之前它是j = 2 ...请帮助我

时间:2013-04-14 03:26:16

标签: python

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

正如你所看到的那样,首先是X的块,如果j == 2:打印2但是在s和W的第二个块中,如果j == 2不打印2 ...为什么,改变j值

2 个答案:

答案 0 :(得分:1)

看起来您的问题出现在第二个for循环中。您试图在i --> j -1范围内进行循环,但由于您在开头增加了j的值,这与编写range(i, i)相同。也许你可以在j循环的底部增加for i in range(1, len(s) - 1)

答案 1 :(得分:1)

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

>>> for x in xrange(1,1):
...     if True:
...         print "hi"
>>>