Python 查询中的“或”运算符

1 python operator-keyword

我是 Python 的初学者,试图结合我迄今为止学到的一切来制作一个简单的程序。在这个问题中,程序本身不是问题,而是它的一个特定部分,我已经解决了这个问题,但想深入了解为什么会发生这种情况。

def printresults (answer):
    if answer == "y" or "Y":
        print ("Yes")
    else:
        print ("No")
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我设法让这个函数以“N”作为“答案”运行。我面临的问题是它会运行第一个 if 分支,在这种情况下打印“是”,尽管它不是“y”或“Y”。

从那以后,我通过在函数中创建一个新变量并使用 lower() 方法只产生一种可能性来解决这个问题,然后简单地要求它确定它是否为“y”。

def printresults (answer):
    lwranswer = answer.lower()
    if lwranswer == "y":
        print ("Yes")
    else:
        print ("No")
Run Code Online (Sandbox Code Playgroud)

因此,我怀疑错误在于我以某种方式滥用了“或”运算符 - 我只是不知道如何或为什么。任何见解将不胜感激。

谢谢

请注意,该程序不会简单地返回“是”或“否”,而是将其打印出来以进行故障排除并查看它采用的分支。

Adi*_*rio 5

这里有两个选项,unsing,or但这需要完整的子句:

if answer == "y" or answer == "Y":
Run Code Online (Sandbox Code Playgroud)

或使用in和集合(集合效果最好,但在这种情况下元组和列表也是有效的替代方案):

if answer in {"y", "Y"}:
Run Code Online (Sandbox Code Playgroud)