无法增加另一个循环的索引

时间:2014-05-31 08:10:33

标签: python string for-loop

我想将与特定字符串匹配的字符串的内容添加到列表中,但是我遇到了问题。如果我有一个以上的字符串,例如我有字符串"b c d"以及字符串"e",假设sys.argv中的单词只能是字符串的一部分,怎么能我从"b c d"的控件直接跳转到"e"的控件?

begin=1
length=len(sys.argv)
frase="b c d"
def funz(a,b):              #funz che torna una stringa    
    s=""
    for arg in sys.argv[a:b]:
        #print arg
        s+=arg+" "
    x=list(s)               #to delete the last whitespace
    x[len(x)-1]=""
    s="".join(x)
    print s
    return s
l=[]
def funz2(x):
    l.append(x)

for i in range(begin,length):
    for j in range(length,begin,-1):
        if funz(begin, length)==frase :
            #print length
            #print begin
            funz2(frase)
            length=length-1
            i=+length        #this doesn't increment i !
            break
            #print funz(begin,length) 
        else:
            #print length
            #print begin
            length=length-1
    begin=begin+1
    length=len(sys.argv)

print l

1 个答案:

答案 0 :(得分:2)

Python for循环与迭代一起工作; range()生成for循环的数字序列,每个迭代i绑定到该序列中的下一个项目。 i不会增加for,也不能在循环中提供帮助。

改为使用while循环:

i = begin - 1
while i < length:
    i += 1

    # rest of your loop

现在i 作为循环的一部分递增,你可以再增加它。

您似乎已经了解str.join(),但您错过了将其用于funz的机会;整个功能可以替换为:

def funz(a, b):
    return ' '.join(sys.argv[a:b])

也可以在你的循环中内联以避免混淆。 funz2也是如此,它只用于操纵全局。