对于第一种情况后的循环停止

时间:2014-03-30 23:20:59

标签: python

我有一个for循环遍历字符串中的每个单词并返回一个修改过的字符串。

但是,循环在第一个单词后停止。

汇总代码如下所示:

def format(x):
    return x
def modify(string):
    for x in words:
        if statement:
            return x[v:] + x[:v] + "xx"
        else:
            return x + "xx"
def final(string):
    return format(modify(string))

格式函数格式的修改功能,而最终函数将所有内容放在一起。它适用于字符串中的第一个单词,但在此之后停止。

当前输入和输出:

>>>final("This is a test case")
>>>>Htisxx

我想要的是什么:

>>>final("This is a test case")
>>>>Htisxx isxx axx esttxx asecxx

为什么循环停止?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

return会立即离开该功能,即使您只是第一次通过for循环。

相反,请尝试

def first_vowel(word):
    for offset,ch in enumerate(word):
        if ch in "aeiou":
            return offset
    return 0

def modify_word(word):
    v = first_vowel(word)
    return word[v:] + word[:v] + "xx"

def modify(s):
    words = s.split()
    return ' '.join(modify_word(word) for word in words)

def format(s):
    return s

def final(s):
    return format(modify(s))

final("This is a test case")  # => 'isThxx isxx axx esttxx asecxx'

答案 1 :(得分:-1)

增加else块的缩进,如下所示:

def format(x):
    return x
def modify(string):
    for x in words:
        if statement:
            return x[v:] + x[:v] + "xx"
        else:
            return x + "xx"
def final(string):
    return format(modify(string))