如何打印条件语句的返回值

时间:2019-07-04 08:51:01

标签: python

如何在以下代码中返回if not 2 >= 3:的布尔值?

如何从if语句之前获得结果的值?我知道它的“真实”,但是我怎么指代它呢?

def using_control_once():
    if not 2 >= 3:
        return "Success"


print using_control_again()

def using_control_once():
    if not 2 >= 3:
        return "Controlled"


print using_control_once()

我想在评估not 2 >= 3之后打印if语句的值,而不是返回函数的赋值

4 个答案:

答案 0 :(得分:1)

在下面的代码中,我没有为条件变量分配任何新值。 我们只是在这里从条件本身返回值。

我认为这就是您想要的。

def using_control_once():
    condition = not 2 >= 3
    if condition:
        return condition

print(using_control_once())

答案 1 :(得分:0)

在python中的条件语句中,例如:

if <condition>:
    <statement>

<condition>获取evaluated in a boolean context,但未保存在变量中。您在这里有两种选择:

1)如果只需要打印条件的“真值”:

print(<condition>)

由Devesh Kumar Singh建议,或者出于安全考虑:

print(str(<condition>))

2)如果需要if语句:

if <condition>:
    print("True")
    <other statement>
else:
    print("False")
    <other statement>

我希望能有所帮助。我还建议您阅读Conditional Statements in Python

上的这篇文章

答案 2 :(得分:-1)

如果要跟踪评估条件的时间和方式,可以执行以下操作:

from inspect import getouterframes, currentframe, getsourcelines
import re

def test(exp):
    frame_info = getouterframes(currentframe(), 2)[1]
    result = re.search(f'{test.__name__}[ ]*\(([^\)]+)\)', frame_info.code_context[1], re.DOTALL)
    condition = '{} is {}'.format(result.group(1), bool(exp))
    print(condition)

    return bool(exp)


def using_control_once(x):
    if test(x < 10):
        return "Success #1"

    if test(x < 20):
        return "Success #2"

    if test(x < 30):
        return "Success #3"


print("x=3")
result = using_control_once(3)
print(f"result is: {result}")

print("\nx=13")
result = using_control_once(13)
print(f"result is: {result}")

print("\nx=23")
result = using_control_once(23)
print(f"result is: {result}")

输出将是:

x=3
x < 10 is True
result is: Success #1

x=13
x < 10 is False
x < 20 is True
result is: Success #2

x=23
x < 10 is False
x < 20 is False
x < 30 is True
result is: Success #3

答案 3 :(得分:-1)

非常感谢你们,感谢Victor的勤奋工作,我还是python和程序设计的新手。这需要一些时间才能理解,但很高兴它可行。

def test(exp):
    frame_info = getouterframes(currentframe(), 2)[1]
    result = re.search(f'{test.__name__}[ ]*\(([^\)]+)\)', 
    frame_info.code_context[1], re.DOTALL)
    condition = '{} is {}'.format(result.group(1), bool(exp))
    print(condition)

    return bool(exp)