擅长:python、mysql、java
<p>您永远不会在循环结束时到达您的<code>break</code>语句,因为您首先命中<code>continue</code>,然后跳到下一个迭代。只要把<code>continue</code>拿出来,你就可以准备好了。在</p>
<pre><code>else:
b = b + 1
if b == 202:
print(a)
break
</code></pre>
<hr/>
<p>我也建议不要使用像<code>202</code>这样的“神奇”数字。相反,使用<code>len</code>函数动态地确定您是否在字符串的末尾:</p>
^{pr2}$
<p>或者更好的是,利用Python中可以轻松迭代字符串的事实:</p>
<pre><code>for ch in a:
# Do stuff
</code></pre>
<hr/>
<p>正如其他人在评论中所说,你的逻辑也是有缺陷的(<code>replace</code>无论如何都会覆盖整个字符串!),而且你不需要所有这些<code>str(...)</code>调用。您的整个函数可以重写为:</p>
<pre><code>newstring = ''
for ch in a:
if ch == 'k':
newstring += 'm'
elif ch == 'o':
newstring += 'q'
elif ch == 'e':
newstring += 'g'
else:
newstring += ch
print newstring
</code></pre>
<p>或者更好的方法是,只需按照其预期的方式使用<code>replace</code>函数:</p>
<pre><code>print a.replace('k', 'm').replace('o', 'q').replace('e','g')
</code></pre>