2017-10-18 54 views
0

我一直在試圖創建一個程序來驗證一個列表中的字符串或該列表中的元素是否包含2個或更多'a',以防萬一它不應該將元素保存在新列表中。這是到目前爲止我的代碼:用雙'a'消除列表中的字符串元素

ent = input("Ingresa un listado de palabras separados por coma: ") 
lst_1 = ent.split(",") 
lst_2 = [] 

def cuenta(lst_M): 
    tmp = 0 
    for i in range (0,len(element)): 
     print(lst_M[i]) 
     if lst_M[i] == 'a': 
      tmp += 1 
      print(tmp) 
    return tmp  


for element in lst_1: 
    lst_rev = [i for i in element] 
    cuenta(lst_rev) 
    print("Este es el valor de tmp:",tmp) 
    if tmp <= 2: 
     lst_2.append(element) 
    print(lst_2) 

print(lst_2) 

輸出看起來是這樣的:

Ingresa un listado de palabras separados por coma: ana,another,person,ana 
a 
1 
n 
a 
2 
Este es el valor de tmp: 0 
['ana'] 
a 
1 
n 
o 
t 
h 
e 
r 
Este es el valor de tmp: 0 
['ana', 'another'] 
p 
e 
r 
s 
o 
n 
Este es el valor de tmp: 0 
['ana', 'another', 'person'] 
a 
1 
n 
a 
2 
Este es el valor de tmp: 0 
['ana', 'another', 'person', 'ana'] 
['ana', 'another', 'person', 'ana'] 

正如你可以看到我用一個函數來計算的「A」的元素中,但數某些原因,函數外部的變量tmp始終爲0. 我在做什麼錯?

+1

您需要在'for'循環中存儲'cuenta'方法的返回值:'tmp = cuenta(lst_rev)'。然後檢查返回值。 –

+0

它完全工作,你可以把它作爲一個aswer,所以我可以接受你的答案! – Zombraz

回答

1

嘗試將函數調用的結果分配給一個變量。目前,您正在調用正在返回值的函數,但您並未「捕獲」函數調用範圍之外的返回值。

tmp = cuenta(lst_rev) 
print("Este es el valor de tmp:",tmp) 
相關問題