如何在事后检查功能是否返回T或F?

时间:2016-01-06 22:44:33

标签: python python-2.7

以下是我的工作内容:

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

我如何获得一些稍后的代码来检查并查看返回的内容? 阿卡我会写什么?

4 个答案:

答案 0 :(得分:1)

试试真相:

if yes_or_no(answer):
    # user picked yes
else:
    # user picked no

如果answer既不是'yes'也不是'no',您可能想要考虑会发生什么。也许您之前在代码中已经检查过这种情况,但您也可以使用:

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

并完成它;现在它总是返回一个布尔值。如果是True,则'yes',否则False

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

正如其他人已经指出的那样,您应该验证用户输入。如果没有强制执行,千万不要期望用户输入符合您的期望。下面的代码使用循环,在输入与yesno匹配之前不断询问用户。

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语句中的返回值。

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

Python解释器将if语句的条件计算为布尔值TrueFalse。在上述情况下,==为true或false。但由于yes_or_no()已经返回一个布尔值,我们可以直接使用它。

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

由于函数返回表示用户确认的布尔值,因此您还可以将函数重命名为user_confirmed()。直觉上,user_confirmed()可能是真或假,而yes_or_no()则不能,因为其中一个总是发生。 if语句读起来更自然。

答案 3 :(得分:-1)

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

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

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