擅长:python、mysql、java
<p>这里有两件事:</p>
<ol>
<li><p><code>str.replace</code>不会自动对其参数进行字符串化。您需要手动将它们转换为字符串。记住:“显式比隐式好。”</p></li>
<li><p><code>str.replace</code>不能正常工作,因为字符串在Python中是不可变的。您需要将<code>s</code>重新分配给<code>str.replace</code>返回的新字符串对象。</p></li>
</ol>
<p>你的代码应该是:</p>
<pre><code>s = s.replace(str(i), str(i-1))
</code></pre>
<p>此外,还可以将<code>if i % 2 != 0:</code>替换为<code>else:</code>,因为第二个if语句的条件只有在第一个if语句为false时才能为true:</p>
^{pr2}$
<hr/>
<p>关于您编辑的问题,您试图通过在字符串<code>s</code>后面加上括号来调用它作为一个函数。您需要使用方括号来索引字符串:</p>
<pre><code>>>> 'abcde'[0]
'a'
>>> 'abcde'[3]
'd'
>>>
</code></pre>
<p>在你的情况下,应该是:</p>
<pre><code>s = s.replace(s[i], s[i-1])
</code></pre>
<p>一般来说,括号<code>(...)</code>用于调用函数,而方括号<code>[...]</code>用于索引序列/容器。在</p>