擅长:python、mysql、java
<p><code>s.replace(x, y)</code>不是此处使用的正确方法:</p>
<p>它做两件事:</p>
<ol>
<li><em>在<code>s</code>中查找</em><code>x</code></li>
<li><em>将它替换为<code>y</code></li>
</ol>
<p>但是你在这里找不到任何东西,因为你已经有了你想要替换的单词。问题是,它每次都从字符串的开头开始搜索<code>x</code>,而不是从您当前所在的位置开始搜索,因此它会查找您已经替换的单词,而不是您下一次要替换的单词</p>
<p>最简单的解决方案是收集列表中的反向单词,然后通过连接所有反向单词从该列表中构建一个新字符串。您可以使用<code>' '.join()</code>连接字符串列表并用空格分隔它们</p>
<pre><code>def backward_string_by_word(text):
reversed_words = []
for word in text.split():
reversed_words.append(word[::-1])
return ' '.join(reversed_words)
</code></pre>
<p>如果您已经理解了这一点,还可以通过使用生成器表达式跳过中间列表来更简洁地编写:</p>
<pre><code>def backward_string_by_word(text):
return ' '.join(word[::-1] for word in text.split())
</code></pre>