在我的程序中,用户输入了另一个人要猜测的秘密单词(hang子手)。然后将字母放入列表中。我试图做一个循环,检查列表中是否有几个相等的字母,如果有则删除它们。 我已经解决了问题在于,此循环还会删除其他不希望删除的字符。
word = []
for i in range(int(len(secret_word)) - 1):
if word[l] == word[q]:
word.pop(l)
q += 1
if q > int(len(word)):
break
else:
l +=1
使用单词“ secret”然后打印列表,我得到的输出是
['s', 'c', 'e', 't']
它已删除e,但不幸的是r也已删除。 同样,此循环不会删除第三个相等的字母。使用“秘密”输出为
['s', 'c', 'e', 'i', 'e']
在这里,删除e之一,但同时删除r,t和v
答案 0 :(得分:0)
word = 'secretblahblahset'
result = ''
for c in word:
if not c in result:
result += c
print(result)
答案 1 :(得分:0)
您的示例代码缺少许多功能,例如q
和l
的初始化。而且我怀疑您必须有一个不向我们展示的外部循环,否则该示例没有任何意义(在给出的示例中,word
只是一个空列表)。
如果要在字符串中包含所有唯一字母,可以使用set()
轻松做到:
unique_letters = set(secret_word)
但是,这不会保留顺序。对于您的情况,我不知道您是否需要保留订单。但是,如果您想这样做的话,有很多方法,但通常仍然涉及set()
,但不一定。这是一种方法:
unique_letters = []
seen = set()
for let in secret_word:
if let in seen:
continue
unique_letters.append(let)
seen.add(let)
单线的另一种方式可能是:
unique_letters = sorted(set(secret_word), key=secret_word.index)
这些只是几个例子。有很多方法可以做到这一点。抱歉,我无法确切说明您的代码出了什么问题。该示例缺少太多上下文。但是您可能使问题复杂化了。