Q4 If Function vs 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()
2
>>> print(result)
None
"""
if c():
return t()
else:
return f()
def with_if_function():
"""
>>> result = with_if_function()
1
2
>>> print(result)
None
"""
return if_function(c(), t(), f())
def c():
"*** YOUR CODE HERE ***"
def t():
"*** YOUR CODE HERE ***"
def f():
"*** YOUR CODE HERE ***"
刚开始刷CS61A,看到这道题有一丝的绝望,这才是Homework01啊,01就不会,后面该怎么办…
后来查了一下,终于搞清楚了。
思路
从逻辑上讲,with_if_statement和with_if_function是相同的。但是,从解释器的角度来看这两个函数,它们是不同的。
with_if_function函数使用一个调用表达式,它保证它的所有操作数子表达式在if_function应用于结果参数之前都会被计算。因此,即使c返回False,该函数t也会被调用。相比之下,如果返回 False,with_if_statement则永远不会调用。
代码
def c():
"*** YOUR CODE HERE ***"
return False
def t():
"*** YOUR CODE HERE ***"
print(1)
def f():
"*** YOUR CODE HERE ***"
print(2)
然后测试成功!