UCB CS 61A - If Function vs Statement

Problem

Let's write a function that does the same thing as an if statement.

def if_function(condition, true_result, false_result):
    """
    Return true_result if condition is a true value, 
    and false_result otherwise.

    >>> if_function(True, 2, 3)
    2
    >>> if_function(False, 2, 3)
    3
    >>> if_function(3==2, 3+2, 3-2)
    1
    >>> if_function(3>2, 3+2, 3-2)
    5
    """
    if condition:
        return true_result
    else:
        return false_result


def with_if_statement():
    """
    >>> result = with_if_statement()
    47
    >>> print(result)
    None
    """
    if cond():
        return true_func()
    else:
        return false_func()


def with_if_function():
    """
    >>> result = with_if_function()
    42
    47
    >>> print(result)
    None
    """
    return if_function(cond(), true_func(), false_func())

Despite the doctests above, this function actually does not do the same thing as an if statement in all cases. To prove this fact, write functions cond, true_func, and false_func such that with_if_statement prints the number 47, but with_if_function prints both 42 and 47.


Solution

def cond():
    return False


def true_func():
    print(42)


def false_func():
    print(47)
上一篇:Upper-Confidence-Bound(UCB) Action Selection


下一篇:UCB CS 61A - If Function vs Statement