前不久在知乎上看到CS61A 和CS61B spring18 开课的消息。上去看了一眼,发现真的不错,所有proj hw都可以本地测试!也就是说除了没有课程成绩和官方讨论区和TA解答外,这个课完全可以上!(还需要FQ看油管)简直棒啊。于是打算寒假刷一波61A 61B 在此也立下flag
61A hw01
Q1: A Plus Abs B
Fill in the blanks in the following function definition for adding a
to the absolute value of b
, without calling abs
.
from operator import add, sub def a_plus_abs_b(a, b): """Return a+abs(b), but without calling abs. >>> a_plus_abs_b(2, 3) 5 >>> a_plus_abs_b(2, -3) 5 """ if b < 0: f = _____ else: f = _____ return f(a, b)
Use Ok to test your code:
python3 ok -q a_plus_abs_b
第一题就出问题简直好气。实际上python很灵活,我学了C以为赋值只能是值赋值,要么就函数指针,结果这个居然可以f = add 和 f = sub!惊呆了
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(): """ >>> with_if_statement() 1 """ if c(): return t() else: return f() def with_if_function(): return if_function(c(), t(), f()) def c(): "*** YOUR CODE HERE ***" def t(): "*** YOUR CODE HERE ***" def f(): "*** YOUR CODE HERE ***"
在上面填写代码,让with_if_statement return 1但是with_if_function return 不是1;
这里主要考察两个知识点:1.if-else语句有一句后面不会执行 2.函数调用值传递必须在外面算完值才会传递进去
有了这两条,大家也知道该怎么做了吧