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