擅长:python、mysql、java
<p>当您试图在某个<em>位置替换一个字符时,您不想使用<code>replace</code>;它只适用于您要替换所有与某个值匹配的字符(在所有索引中)。在</p>
<p>在索引处用字符替换的方法是:</p>
<pre><code>soFar = soFar[:index] + newChar + soFar[index+1:]
</code></pre>
<p>在本例中,secretWord中的每个字符都匹配soFar中的两个字符,因此必须将它们加倍:</p>
^{pr2}$
<hr/>
<p>但是你怎么知道指数呢?不是通过对有相同问题的字符串调用<code>index</code>,返回具有该值的第一个字符的索引,而不是您想要的那个。使用<code>enumerate</code>函数为您继续计算:</p>
<pre><code>for index, char in enumerate(secretWord):
</code></pre>
<hr/>
<p>正如kevinsa5建议的那样,如果您使用列表而不是字符串,则可以使其更简单:</p>
<pre><code>soFar = []
for char in secretWord:
soFar.append('_')
</code></pre>
<p>现在,替代品只是:</p>
<pre><code>soFar[index] = char
</code></pre>
<p>但是,如果将其作为字符串打印出来,它看起来像<code>['_', '_']</code>,而不是{<cd5>}。要将其转换为一个漂亮的字符串,您需要使用<code>join</code>方法:</p>
<pre><code>print ' '.join(soFar)
</code></pre>