2015-10-02 168 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