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

2024-05-19 14:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将与特定字符串匹配的字符串的内容添加到列表中,但我遇到了一个问题。如果我有多个字符串,例如我有字符串"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

Tags: 字符串inforlendefsysarglength
1条回答
网友
1楼 · 发布于 2024-05-19 14:00:39

Python for循环使用iterable;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,它只用于操纵全局变量。你知道吗

相关问题 更多 >