Python 3.5、在集合中查找用户输入的值并显示它们

Python 3.5, Finding user inputted values in a set and displaying them

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.")

如果在用户输入中找到任何元音,或者如果有 none,代码将输出元音,打印一条消息。目前,如果用户在打印 "No vowels entered" 行时输入了多个元音,则该代码不起作用。这个毛病怎么改。

if 块只有在 inp 是元音的子串时才会执行。为了检查共享字符,例如本例中的元音,您可以使用 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.")