0

我想检查用户输入的字符串是否包含列表中的字符串之一。

我知道如何检查字符串是否包含一个字符串,但我想知道如何检查一个字符串是否包含这个字符串、那个字符串或另一个字符串。

例如,如果我正在检查用户的输入以查看它是否包含元音......当我们谈论元音时可能有 5 种不同的选择(a、e、i、o 或 u)。如何检查用户输入的字符串是否具有其中之一?

4

5 回答 5

3

使用任何

>>> 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
于 2013-08-14T05:22:09.783 回答
2
>>> vowels = set(['a', 'e', 'i', 'o', 'u'])
>>> inp = "foobar"
>>> bool(vowels.intersection(inp))
True
>>> bool(vowels.intersection('qwty'))
False
于 2013-08-14T05:25:06.303 回答
1

这是您想要的基本逻辑:

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)

不同之处在于,此方法不会返回自定义字符串,而是返回Trueor False; 我们可以在循环中以相同的方式使用它:

if any(i in user_input_string for i in vowels):
    print('Found it!')
else:
    print('Oh noes! No vowels for you!')
于 2013-08-14T05:23:47.297 回答
0

按顺序检查字符串是可行的,但如果对您的情况来说效率太低,您可以使用Aho-Corasick algorithm

于 2013-08-14T05:27:52.387 回答
-1

您可以使用此语法

if myItem in list:
# do something

还要看功能:

http://docs.python.org/2/library/functions.html

于 2013-08-14T05:22:28.383 回答