首页 > 解决方案 > 我的代码的哪一部分打印了这个特定的行?

问题描述

我开始学习 python,这是我关于 stackoverflow 的第一个问题。问题是:为什么在运行代码时会打印Function return false ?我的代码的哪一部分打印出来了?

def return_false():
    print("Function return false")
    return False
    
def return_true():
    print("Function return true")
    return True

print("test 2")

if return_false() and return_true():
    print("True")
else:
    print("False")
test 2
Function return false  # I don't understand what makes this popped up.
False

标签: python-3.xfunctionprinting

解决方案


首先,这个问题需要一些编辑,但由于编辑队列已满,我不能这样做,所以我会回答你的问题。

您的代码如下:

    def return_false():
        print('Function return false')
        return False
 
    def return_true():
        print('true')
        return True

    print('test 2')
    if return_false() and return_true():    # the problem is here
        print('True')
    else:
        print('False')

并且您期望的输出必须是:

    test 2
    False

而实际输出是:

    test 2
    Function return false
    False

问题在于 if 语句(主要是函数)。因此,您print('test 2')负责输出test 2,但是当您编写if return_false() and return_true():python 调用函数以获取返回值时。它首先调用return_false()它不仅返回False,而且还包含一个print('Function return false')语句,因此它也被执行,它负责Function return false代码中的额外输出。

最后,接下来的 if 语句获取and运算符,但由于逻辑比较的值是False它不必检查第二个值,因为无论第二个值是什么,表达式总是会计算为False(因为True and FalseFalse and False两者都会导致in False)。因此,该if块下的代码没有被执行,程序到达else语句并执行该print('False')语句,该语句负责False作为最后的输出。

要解决此问题,您将代码修改为:

    def return_false():
        # print('Function return false') # remove this line and use print(return_false()) instead to learn that the function returns a False value
        return False
 
    def return_true():
        # print('true') # remove this too and use print(return_true()) instead
        return True

    print('test 2')
    if return_false() and return_true():
        print('True')
    else:
        print('False')

此代码将输出:

    test 2
    False

我希望答案是有帮助的......快乐的编码...... :)


推荐阅读