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

Python 如何与单词的前缀进行比较,python,if-statement,Python,If Statement,让我用一段简短的代码解释一下 代码: 我怎样才能做到这一点,而不是: if choice == "y".lower() or choice == "ye".lower() or choice == "yes".lower(): 它自动接受,“y”,“ye”或“yes”,而无需执行或那么多操作。您可以使用以下操作来实现: if 'yes'.startswith(choice.lower().strip()): print('You said "yes"!') 您可以使用来实现这一点: i

让我用一段简短的代码解释一下

代码:

我怎样才能做到这一点,而不是:

if choice == "y".lower() or choice == "ye".lower() or choice == "yes".lower():
它自动接受,
“y”
“ye”
“yes”
,而无需执行
那么多操作。

您可以使用以下操作来实现:

if 'yes'.startswith(choice.lower().strip()):
   print('You said "yes"!')
您可以使用来实现这一点:

if 'yes'.startswith(choice.lower().strip()):
   print('You said "yes"!')

您只需选择输入的第一个字符与“y”进行比较。还要注意,您需要将输入设置为小写。因此,代码变成:

choice = raw_input("Do you like pineapple? Y/N: ")[0]
if choice.lower() == "y":
    print("Sammmmeee")
else:
    print("Nani! You criminal!")

您只需选择输入的第一个字符与“y”进行比较。还要注意,您需要将输入设置为小写。因此,代码变成:

choice = raw_input("Do you like pineapple? Y/N: ")[0]
if choice.lower() == "y":
    print("Sammmmeee")
else:
    print("Nani! You criminal!")

这将不区分大小写地精确匹配
'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!")

这将不区分大小写地精确匹配
'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!")

首先,您不应该将
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)):

这里的所有测试都是正确的短路,就像您的原始表达式一样

首先,您不应该将
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)):

这里的所有测试都是正确的短路,就像您的原始表达式一样

我已经更新了你的标题并删除了自嘲的介绍。在那之前,我就已经很清楚问题会是什么,所以不要低估自己。首先正确地使用
也很好。从这里的许多问题来看,直觉上这并不容易。谢谢你让标题更容易理解:)我更新了你的标题,删除了自我贬低的介绍。在那之前,我就已经很清楚问题会是什么,所以不要低估自己。首先正确地使用
也很好。从这里的许多问题来看,直觉上这并不容易。感谢您让标题更容易理解:)这与OP要求的方式不同:例如,您的代码将接受“yerk!”这与OP请求的方式不同:例如,您的代码将接受“yerk!”是的,但不应该。