我想检查用户输入的字符串是否包含列表中的字符串之一。
我知道如何检查字符串是否包含一个字符串,但我想知道如何检查一个字符串是否包含这个字符串、那个字符串或另一个字符串。
例如,如果我正在检查用户的输入以查看它是否包含元音......当我们谈论元音时可能有 5 种不同的选择(a、e、i、o 或 u)。如何检查用户输入的字符串是否具有其中之一?
我想检查用户输入的字符串是否包含列表中的字符串之一。
我知道如何检查字符串是否包含一个字符串,但我想知道如何检查一个字符串是否包含这个字符串、那个字符串或另一个字符串。
例如,如果我正在检查用户的输入以查看它是否包含元音......当我们谈论元音时可能有 5 种不同的选择(a、e、i、o 或 u)。如何检查用户输入的字符串是否具有其中之一?
使用任何:
>>> vowels = 'a', 'e', 'i', 'o', 'u'
>>> s = 'cat'
>>> any(ch in vowels for ch in s)
True
>>> s = 'pyth-n'
>>> any(ch in vowels for ch in s)
False
>>> vowels = set(['a', 'e', 'i', 'o', 'u'])
>>> inp = "foobar"
>>> bool(vowels.intersection(inp))
True
>>> bool(vowels.intersection('qwty'))
False
这是您想要的基本逻辑:
def string_checker(user_input_string, vowels):
for i in vowels:
if i in user_input_string:
return 'Found it'
return 'Sorry grashooper :('
print string_checker('Hello',('a','e','i','o','u'))
执行此操作的捷径是使用内置any()
方法;如果其中的任何项目返回真值,它将返回 true 。
以下是它的工作原理:
any(i in user_input_string for i in vowels)
不同之处在于,此方法不会返回自定义字符串,而是返回True
or False
; 我们可以在循环中以相同的方式使用它:
if any(i in user_input_string for i in vowels):
print('Found it!')
else:
print('Oh noes! No vowels for you!')
按顺序检查字符串是可行的,但如果对您的情况来说效率太低,您可以使用Aho-Corasick algorithm。