至於爲什麼你上面的答案是不行的,這是因爲Python將只需要你通過表達的終值:
>>> 'Yes' and 'y' and 'yes'
'yes'
因此您count
將被關閉,因爲它只是在尋找最終值:
>>> results.count('yes' and 'y')
1
>>> results.count('yes' and '???')
0
會是這樣的工作?請注意,這取決於他們的唯一的結果爲YES /列表中沒有式的答案(將是錯誤的,如果事情像「啊....嗯沒有」都在那裏):
In [1]: results = ['yes', 'y', 'Yes', 'no', 'NO', 'n']
In [2]: yes = sum(1 for x in results if x.lower().startswith('y'))
In [3]: no = sum(1 for x in results if x.lower().startswith('n'))
In [4]: print yes, no
3 3
的總體思路是:把你的結果清單,然後遍歷每個項目,降低它,然後採取第一個字母(startswith
) - 如果該字母是y
,我們知道它是一個yes
;否則,它將是no
。
您還可以通過做這樣的事情(注意這需要Python 2.7)結合起來,如果你想上面的步驟:
>>> from collections import Counter
>>> results = ['yes', 'y', 'Yes', 'no', 'NO', 'n']
>>> Counter((x.lower()[0] for x in results))
Counter({'y': 3, 'n': 3})
Counter
對象是可以治療的,就像字典,所以你現在基本上是有包含了yes
's和no
的字典。
我剛開始是一種模板到這裏;最終它會帶着任何和所有的問題,以及選擇的答案,而不僅僅是「是」和「否」。不過,這是解決我當前問題的一個非常好的方法。我喜歡! – dantdj
@dantdj啊呃 - 無論如何,很高興它幫助! 「計數器」功能在許多情況下可以超級有用,所以如果可能的話,絕對值得探索。祝你一切順利! – RocketDonkey