让我用一些简单的代码来解释。
代码:
choice = raw_input("Do you like pineapple? Y/N: ")
if choice == "y".lower() or choice == "ye".lower() or choice == "yes".lower():
print("Sammmmeee")
else:
print("Nani! You criminal!")
我该怎么做而不是这样做:
if choice == "y".lower() or choice == "ye".lower() or choice == "yes".lower():
它会自动接受"y"
,"ye"
或"yes"
,而无需做太多or
吗?
答案 0 :(得分:3)
首先,您不应该在右侧应用lower
,这是一个常量,已经是小写了。您应该将其应用于变量输入:
choice = raw_input(...).lower()
有多种方法可以检查您要寻找的匹配项。最简单的方法是使用startswith
:
if 'yes'.startswith(choice):
另一种方法是显式检查集合或元组中是否包含:
if choice in ('y', 'ye', 'yes'):
这仅在不适合简单方法检查的情况下才是必需的,例如是否要将ok
添加到选项列表中。
如果要进行多个功能检查,可以将any
与生成器表达式一起使用:
if any(f(x) for f in ('yes'.startswith, 'ok'.startswith)):
这里的所有测试都正确地短路,就像您的原始表情一样。
答案 1 :(得分:2)
您可以使用startswith
来实现:
if 'yes'.startswith(choice.lower().strip()):
print('You said "yes"!')
答案 2 :(得分:1)
这将不区分大小写地精确匹配'y'
,'ye'
和'yes'
:
choice = raw_input("Do you like pineapple? Y/N: ")
if choice.lower() == 'yes'[:len(choice)]:
print("Sammmmeee")
else:
print("Nani! You criminal!")
答案 3 :(得分:0)
您可以选择输入的第一个字符与“ y”进行比较。另请注意,您需要使输入小写。因此代码变为:
choice = raw_input("Do you like pineapple? Y/N: ")[0]
if choice.lower() == "y":
print("Sammmmeee")
else:
print("Nani! You criminal!")