2017-04-20 57 views
-1

描述:計數笑臉在陣列

給定一個陣列(ARR)作爲參數完成的功能countSmileys應返回笑臉的總數。

面帶笑容的規則: - 每個笑臉都必須包含一雙有效的眼睛。眼睛可以標記爲:或; - 一個笑臉可以有一個鼻子,但它不必。對於鼻子的有效字符是 - 或〜 -Every笑臉必須有一個微笑的嘴角應標有其一)或D

有效笑臉例子: :):d ;-D:〜) 無效的笑臉: ;(:>:}:]

這裏是我的代碼:

def count_smileys(arr): 
     if arr == []: 
      return 0 
     count = 0 
     for c in arr: 
      if c == ':)':count+=1 

      if c ==';-D': count+=1 

      if c == ':~)': count+=1 

      if c == ':D': count +=1 

     return count 

,但我沒有通過所有的測試

+3

隨着2種類型的眼睛,3種類型的鼻子和2種嘴巴,你應該有2x3x2 = 12的測試用例,你設置你的測試用例的方式。 4肯定太少了。 – Evert

+0

什麼是陣列?一組字符?迭代字符串中的元素將一次給你一個字符,但是你要比較2到3個字符,永遠不會評估爲真。 – Charlie

回答

0

正則表達式可能是最好的解決辦法:

import re 
def count_smileys(text): 
    return len(re.findall('[:;][-~]?[)D]', text)) 
+0

謝謝,它已經解決了 – rarevessell