Python 如何检查函数是否在事实发生后返回T或F?

Python 如何检查函数是否在事实发生后返回T或F?,python,python-2.7,Python,Python 2.7,以下是我的工作内容: def yes_or_no(answer): if answer == 'yes': return True elif answer == 'no': return False 我如何获得一些稍后的代码来检查并查看它返回什么? 我会写些什么?只是测试一下真相: if yes_or_no(answer): # user picked yes else: # user picked no 如果答案既不是的“是”

以下是我的工作内容:

def yes_or_no(answer):
    if answer == 'yes':
        return True
    elif answer == 'no':
        return False
我如何获得一些稍后的代码来检查并查看它返回什么? 我会写些什么?

只是测试一下真相:

if yes_or_no(answer):
    # user picked yes
else:
    # user picked no
如果
答案既不是
的“是”
也不是
的“否”
,那么您可能需要考虑应该发生什么。也许您已经在前面的代码中检查过这种情况,但您也可以使用:

def yes_or_no(answer):
    return answer == 'yes'

并就此了结;现在它将始终返回布尔值<代码>正确
在出现
的情况下,以及
错误
的情况下,不管怎样。

我同意另一个答案-到目前为止,这是一个更干净的方法。但是,如果您决定对您的功能做些什么:

def yes_or_no(answer):
    if answer == 'yes':
        return True
    elif answer == 'no':
        return False

answer = raw_input('yes or no?')
x = yes_or_no(answer)
print x

我真的是新来的,所以我可能完全错了(或者只是发布了一个不同的,可能更糟的,别人已经说过的版本,但是你可以做:

yes_or_no = raw_input("say yes or no")

if yes_or_no == "yes":
    variable = True
elif yes_or_no == "no":
    variable = False

print variable

如果这是完全错误的,或者不是您想要的,那么我很抱歉。

正如其他人已经指出的那样,您应该验证用户输入。如果不强制执行,则不要期望用户输入符合您的期望。下面的代码使用一个循环,不断询问用户,直到输入匹配

def yes_or_no():
    while True:
        text = input('yes or no? ')
        if text == 'yes':
            return True
        elif text == 'no':
            return False
        else:
            print('Invalid input')
现在可以将函数的返回值赋给新变量,并在if语句中使用该值

answer = yes_or_no()
if answer == True:
    print('Answered yes')
else:
    print('Answered no')
if yes_or_no() == True:
    print('Answered yes')
else:
    print('Answered no')
还可以直接在if语句中使用返回值

answer = yes_or_no()
if answer == True:
    print('Answered yes')
else:
    print('Answered no')
if yes_or_no() == True:
    print('Answered yes')
else:
    print('Answered no')
Python解释器将if语句的条件求值为布尔值,
True
False
。在上述情况下,
==
为True或False。但是由于
yes\u或\u no()
已经返回布尔值,我们可以直接使用它

if yes_or_no():
    print('Answered yes')
else:
    print('Answered no')

由于您的函数返回一个表示用户确认的布尔值,您还可以将该函数重命名为类似于
user\u confirm()
。直观地说,
user\u confirm()
可以是真的,也可以是假的,而
yes\u或\u no()
不能,因为其中一个总是发生。if语句读起来更自然。

如果答案既不是
也不是
,此函数将返回
。为什么有人否决我?如果它不起作用,请至少告诉我原因。