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
如你所见,在第一个for X块中,如果j==2:打印2,但是在第二个s和W块中,如果j==2不打印2…为什么会这样,改变j值
因为l和i循环都从1开始,j=i+l,此时j==2并打印出来。当你尝试在s循环中从1循环到1时,你甚至连一个迭代都不会循环,下一次到达s循环时,j不再等于2。在
看来您的问题出在第二个
for
循环中。您试图在一个从i > j -1
开始的范围内循环,但是由于在开始时增加了j
的值,这与写入range(i, i)
相同。也许您可以在for i in range(1, len(s) - 1)
循环的底部增加j
。在相关问题 更多 >
编程相关推荐