0

我编写了一个简单的脚本来打印给定字符串中的唯一字符。

每个唯一字符都附加到输出中,但最后只打印附加的最后一个字符。

input = "1234a4321b1234c4321d" 

output= ""

for x in input:
    if x not in output:
        output += x

print x

我希望这能打印出来:1234abcd

但它只打印:d

我究竟做错了什么?

4

2 回答 2

4

你应该打印output,而不是x

另外,请注意,您的方法不会只打印唯一字符,因为每个字母将在第一次出现时添加。(1第一次检查时,它还output没有...)

于 2013-05-16T04:40:28.370 回答
0

你确实想打印output而不是x

>>> input = "1234a4321b1234c4321d" 
>>> output = ""
>>> for x in input:
...     if x not in output:
...             output += x
... 
>>> print output
1234abcd
>>> 

但这也不是你所追求的。至少如果您希望您的输出是 acbd 正如您在原始问题中提到的那样。

所以,也许你想检查数字

>>> output = ""
>>> for x in input:
...     if x.isdigit() == False:
...             output += x
... 
>>> output
'abcd'

或者,如果您只想要独特的物品,您可能想要set()

>>> output = ''.join(set((i for i in input)))
>>> output
'acbd1324'

最后,一种更简洁的方式来做你最初追求的事情

>>> output = ''.join(set((i for i in input if i.isdigit() == False)))
>>> output
'acbd'

最后,@RedBaron 在他对原始问题的评论中提供了一种更简单的方法

output = ''.join(set(input))

于 2013-05-16T04:45:02.703 回答