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

2024-05-13 17:41:17 发布

您现在位置:Python中文网/ 问答频道 /正文

让我简单地解释一下。你知道吗

代码:

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那么多?你知道吗


Tags: or代码youinputrawiflowerdo
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)):

这里所有的测试都是正确的短路,就像你原来的表达式一样。你知道吗

这将在大小写上完全匹配'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!")

您可以使用^{}来实现这一点:

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

相关问题 更多 >