2016-11-09 73 views
0
from collections import Counter 

inp = input("Please enter some text: ") 
vowels = set("aeiouAEIOU") 

if inp in vowels: 
    res = Counter(c for c in inp if c in vowels) 
    print (res.most_common()) 

elif inp not in vowels: 
    print("No vowels entered.") 

如果在用戶輸入中找到任何元素,或者如果沒有任何元素,則輸出元音代碼以打印消息。目前,如果用戶輸入多個元音時,代碼不起作用,因爲它會打印「無元音輸入」行。如何糾正這個錯誤。Python 3.5,在一組中查找用戶輸入的值並顯示它們

回答

2

僅當inp是元音的子字符串時,if塊纔會執行。爲了在這種情況下檢查共享字符,如元音,你可以使用any

if any(i in vowels for i in inp): 
    ... 

還是一個交集:

if vowels.intersection(inp): 
    ... 

你也可以簡單的構建首先構建Counter對象,然後進行測試,如果它是空的,以避免迭代輸入兩次:

res = Counter(c for c in inp if c in vowels) 
if res: 
    print(res.most_common(2)) # specify a parameter to avoid printing everything 
else: 
    print("No vowels entered.") 
+0

我想出了完全相同的線路變化:)只是一點點太晚 –

+0

@讓 - 弗朗索瓦çoisFabre發生這種情況:) –

+1

不抱怨。今天充滿了很好的問題和答案:) –

相關問題