即使输入包含元音的单词也会输出“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
关于python - 如何检查字符串是否包含任何字符列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58799573/