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)
表达式,"y" or "yes"将评估为"y".你想要的是:
if answer in ('y', 'yes'):
return True
Run Code Online (Sandbox Code Playgroud)
我不是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.