我有一个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
为什么循环停止?我该如何解决这个问题?
答案 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))