Skip to main content
 首页 » 编程设计

python之如何检查字符串是否包含任何字符列表

2025年05月04日30wuhuacong

即使输入包含元音的单词也会输出“NO VOWELS HERE!”。为什么?请协助。

vowels = 'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U' 
I = input("enter your name") 
L = list(I) 
print(L) 
if vowels in L: 
    print("your name contains a vowel") 
else: 
    print("NO VOWELS HERE!") 

请您参考如下方法:

您必须比较每个单独的元音。

vowels = 'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U' 
name = input("enter your name") 
if any(vowel in name for vowel in vowels): 
    print("your name contains a vowel") 
else: 
    print("NO VOWELS HERE!") 

正如您在这段代码中看到的,name 没有转移到列表中。您不需要它,因为字符串是可迭代的。这意味着您可以进行另一项更改:

vowels = 'aAeEiIoOuU' 
name = input("enter your name") 
if any(vowel in name for vowel in vowels): 
    print("your name contains a vowel") 
else: 
    print("NO VOWELS HERE!") 

原始代码中发生的事情的示例:

>>> needle = 'a', 'b' 
>>> needle in list('ab') 
False 

让我们检查一下值:

>>> needle 
('a', 'b') 
>>> list('ab') 
['a', 'b'] 

您测试元组 ('a', 'b') 是否是 ['a', 'b'] 的元素。如您所见,事实并非如此。列表的元素是 'a' 和 'b'。要成为 True,比较必须如下所示。

>>> needle in [('a', 'b')] 
True 

您必须明白您是在比较确切的元组,而不是它的一部分。

>>> needle in [('a', 'b', 'c')] 
False