1

假设我问用户是否开始测验,并且有可能回答是,是的,是的。

我想把可能的答案放在一个列表中,让 python 遍历列表中的每个元素并检查它们是否相等。

if answer.lower() == 'yeah yes yep yea'.split(): 
    .... blocks of code ....
4

2 回答 2

2

使用in运算符:

if answer.lower() in 'yeah yes yep yea'.split():

演示:

>>> 'YeAH'.lower() in 'yeah yes yep yea'.split()
True
>>> 'Yee'.lower() in 'yeah yes yep yea'.split()
False

如果每次都创建一个列表,最好先定义列表/元组(如果你这样做是一个循环):

>>> lis = 'yeah yes yep yea'.split()
>>> 'yes' in lis
True

在 Python3.2+ 中,建议使用set文字

Python 的窥孔优化器现在可以识别模式,例如x in {1, 2, 3}测试一组常量的成员资格。优化器将集合重铸为 afrozenset并存储预构建的常量。

现在速度损失已经消失了,开始使用集合符号编写成员测试是可行的。这种风格在语义上清晰且操作快速:

if answer.lower() in {'yeah', 'yes', 'yep', 'yea'}:
    #pass
于 2013-11-01T17:19:17.263 回答
0

不要使用字符串然后拆分,为什么不使用可能答案的列表?

if answer.lower() in ['yes', 'yeah', 'Yeah', 'yep', 'yea']: # you can add more options to the list
    # code
于 2013-11-01T17:19:44.013 回答