<p>你离我很近。您需要将<code>return</code>移到for循环之外,这是因为函数一旦遇到return语句就会返回。你还需要在移动中更新字母表,也就是说,这个字母表已经被哨兵访问过了</p>
<pre><code>def removeDups(s):
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
sWithoutDups = ""
for eachChar in withDups:
if eachChar in alphabet:
sWithoutDups = sWithoutDups + eachChar
alphabet = alphabet.replace(eachChar,'-') # The character has
# already been found
return sWithoutDups # Move return here
</code></pre>
<p>输出</p>
<pre><code>TheQuickBrownFxJmpdOvLazyDg
</code></pre>
<p>正如前面提到的<a href="https://stackoverflow.com/questions/29950441/python-removing-duplicates-in-a-string-using-in-and-not-in#comment48022012_29950489">below</a>更好的方法是</p>
<pre><code>if eachChar not in sWithoutDups:
sWithoutDups = sWithoutDups + eachChar
</code></pre>
<p>这样你就不需要在字母表上有哨兵了。你知道吗</p>
<p>另一种方法是</p>
<pre><code>def removeDups(s):
l = list(s)
tmp = []
for i in l:
if i not in tmp and i != ' ':
tmp.append(i)
tmp.remove(' ')
return ''.join(tmp)
</code></pre>