假设我问用户是否开始测验,并且有可能回答是,是的,是的。
我想把可能的答案放在一个列表中,让 python 遍历列表中的每个元素并检查它们是否相等。
if answer.lower() == 'yeah yes yep yea'.split():
.... blocks of code ....
使用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
Python 的窥孔优化器现在可以识别模式,例如
x in {1, 2, 3}
测试一组常量的成员资格。优化器将集合重铸为 afrozenset
并存储预构建的常量。
现在速度损失已经消失了,开始使用集合符号编写成员测试是可行的。这种风格在语义上清晰且操作快速:
if answer.lower() in {'yeah', 'yes', 'yep', 'yea'}:
#pass
不要使用字符串然后拆分,为什么不使用可能答案的列表?
if answer.lower() in ['yes', 'yeah', 'Yeah', 'yep', 'yea']: # you can add more options to the list
# code