擅长:python、mysql、java
<p>您可以使用:</p>
<pre><code>''.join(char for char in pharse if char in string.ascii_letters)
</code></pre>
<p>当您这样做时,<code>for characters in phrase</code>字符实际上是短语中的一个字符。循环一个接一个地绕着他们。<code>string.ascii_letters</code>是一个包含所有字母的字符串-短语中的单个字符永远不等于这个值。这使您的检查-<code>characters == string.ascii_letters</code>不合逻辑。在</p>
<p>相反,您应该检查字符是否是<code>in</code>字符串.ascii_字母. 这告诉我们它是否是一个ascii字母。在</p>
^{pr2}$
<p>您的代码还有一个放错位置的return语句。即使条件为真,它也只返回一个字符。您的代码可以重建为:</p>
<pre><code>def allLetters2(phrase):
okchars = []
for character in phrase:
if character in string.ascii_letters:
okchars.append(character)
return ''.join(okchars)
</code></pre>
<p>这正是我上面的代码所做的-只是它使用<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow">list comprehension</a>使其更简短、更具可读性。在</p>