"是"或"是" - 期望未得到满足

0 python

在下面的代码中,answer()按预期工作,如果输入为"y" answer2()则返回true,否则返回false,但是,它总是返回true.

有人可以解释为什么会这样吗?

def answer():
    answer = raw_input()
    if answer == "y":
        return True
    else:
        return False


def answer2():
    answer = raw_input()
    if answer == "y" or "yes":  # <- notice the extra: or "yes"
        return True
    else:
        return False


if answer() == True:
    print "true"
else:
    print "false"


if answer2() == True:
    print "true"
else:
    print "false"
Run Code Online (Sandbox Code Playgroud)

San*_*nta 7

表达式,"y" or "yes"将评估为"y".你想要的是:

if answer in ('y', 'yes'):
    return True
Run Code Online (Sandbox Code Playgroud)

  • -1(1)第一句是真的,但是非常不相同.要评估的表达式是"answer =='y'或'yes'`,它相当于(`answer =='y')或'yes'.所以如果`answer`是''y'`,结果是'真'; 否则结果是"是".就Python而言,这两个结果都是"真实的"(小 - 真).(2)你想要的是'回答'('y','是')` (2认同)

Jon*_*eet 5

我不是Python专家,但我怀疑它应该是:

if answer == "y" or answer == "yes":  # <- notice the extra: or "yes"
Run Code Online (Sandbox Code Playgroud)

换句话说,我怀疑它目前正在将其解析为:

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

并且只是将"是"转换为True,实际上......这就是为什么它总是返回True.