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

标签 python list

即使输入包含元音的单词也会输出“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/

相关文章:

C# 列表元素生命周期 Unity3d

python - 如何更改 mySQL 查询结果中的一行?

python - 通过 ssh 可以替代 "python3 sample_program.py &"的方法是什么?

Python 和 SQLite : Not all arguments converted during string formatting error

python - 三个序列的最长公共(public)子序列

c++ - 从 unordered_set 中删除列表元素

c++ - 如何在 PyQt 上使用 Qxt 库?

python - 有没有办法连接子列表中的字符串列表

java - JSTL 删除附加符号

css - 不能将垂直菜单列表移到最左边,它在水平菜单列表下面