2015-10-02 171 views
0

试图让我的头脑围绕编程,我无法弄清楚为什么这不起作用?我是否错误地使用了“不”和“in”?使用数组在字符串中查找子字符串?

我想让程序只打印出现在两个字符串中的字符。它可以正确识别它们,但如果发生多个事件,我无法只打印一组字符。

a = input("string1 :") 
b = input("string2: ") 
list1 = [] 

for i in a: 
    for j in b: 
     if i == j and i not in list1: 
      list1.append([i]) 
      break 

print(list1) 

例如,如果您打印字符串“亚历山大”和“亚历克斯”将打印的字符A,L,E,X,A,E

我知道这个当前方法仅适用如果字符串2作为主要字符串输入,但我只是感兴趣,为什么这不起作用。

回答

0

问题是,不是将常用字母添加到list1中,而是将仅包含常用字母的新列表添加到list1中。最后你有一个列表清单。与此同时,您正在检查列表中是否有单个字母,这将始终是错误的。

你应该只添加公共字母“i”使用列表中添加:

a = input("string1 :") 
b = input("string2: ") 
list1 = [] 

for i in a: 
    for j in b: 
     if i == j and i not in list1: 
      list1.append(i) 
      break 

print(list1) 

你也可以只字符串转换为A和B组和交叉他们:

print set(a) & set(b) 
+0

哇哦, 谢谢!你帮助我更好地理解列表。非常有帮助,我不能相信这是简单的 – kerberonix

+0

@kerberonix你可以接受你知道的答案 – user1514631