如何与单词的前缀进行比较

时间:2018-09-29 14:44:58

标签: python if-statement

让我用一些简单的代码来解释。

代码:

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吗?

4 个答案:

答案 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!")