<p>有三种方法可以解决这个问题。你知道吗</p>
<p>首先,你没有理由一个接一个地打印出你找到的字符。相反,将它们累积成<code>list</code>(或者更好的是,<code>yield</code>它们),然后<code>join</code>结果并在最后打印出来。你知道吗</p>
<p>例如:</p>
<pre><code>def getGuessedWordd(secretWord, lettersGuessed):
lga = "".join(lettersGuessed)
swa = "".join(secretWord)
jihadi = str()
jihad=" "
result = []
for c in swa:
if c in lga:
result.append(c)
if c not in lga:
result.append("_")
print "".join(result)
</code></pre>
<p>第二,如果必须在找到它们时打印它们,则不能使用<code>print</code>。使用<code>sys.stdout.write</code>。你知道吗</p>
<p>第三,如果您可以升级到python3,那么您就可以使用<code>print</code>。你知道吗</p>
<hr/>
<p>您可以通过其他一些方法来改进此代码:</p>
<ul>
<li>不需要<code>lga</code>和<code>swa</code>。如果<code>lettersGuessed</code>和<code>secretWord</code>已经是字符串,<code>"".join(lettersGuessed)</code>与<code>lettersGuessed</code>完全相同。但是,更重要的是,即使<code>lettersGuessed</code>是一些完全不同的字符序列,这也无关紧要,因为你唯一要做的就是<code>for</code>和<code>in</code>检查。你知道吗</li>
<li>您定义了两个从未使用过的变量,<code>jihad</code>和<code>jihadi</code>。你知道吗</li>
<li>没有理由使用<code>str()</code>;它和<code>""</code>一样。你知道吗</li>
<li>没有理由用完全相反的条件编写两个<code>if</code>语句;只需使用<code>else</code>。你知道吗</li>
</ul>
<p>所以,我们可以简化整个过程:</p>
<pre><code>def getGuessedWordd(secretWord, lettersGuessed):
result = []
for c in secretWord:
if c in lettersGuessed:
result.append(c)
else:
result.append("_")
print "".join(result)
</code></pre>
<p>一旦你这么做了,很明显循环和列表是一样的:</p>
<pre><code>def getGuessedWordd(secretWord, lettersGuessed):
result = [c if c in lettersGuessed else '_' for c in secretWord]
print "".join(result)
</code></pre>