2016-11-09 75 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

不抱怨。今天充满了很好的问题和答案:) –

相关问题