问题1
def wears_jacket_with_if(temp, raining):
"""
>>> wears_jacket_with_if(90, False)
False
>>> wears_jacket_with_if(40, False)
True
>>> wears_jacket_with_if(100, True)
True
"""
"*** YOUR CODE HERE ***"
if raining or temp < 60:
return True
else:
return False
def wears_jacket(temp, raining):
"*** YOUR CODE HERE ***"
return raining or temp < 60
问题2
对special_case
和case_in_point
的调用都返回 12,而对just_in_case
的调用返回 19。由于数字 10 满足每个函数中的全部三个条件,因此在just_in_case
调用时x
变量的值增加了 3 次。如果每个if
子句都以一个return
语句结尾, 则一系列if
语句与使用if
和elif
组合具有相同的效果。
问题3
def with_if_statement():
"""
>>> result = with_if_statement()
61A
>>> print(result)
None
"""
if cond():
return true_func()
else:
return false_func()
def with_if_function():
"""
>>> result = with_if_function()
Welcome to
61A
>>> print(result)
None
"""
return if_function(cond(), true_func(), false_func())
def cond():
"*** YOUR CODE HERE ***"
return False
def true_func():
"*** YOUR CODE HERE ***"
print("Welcome to")
def false_func():
"*** YOUR CODE HERE ***"
print("61A")
函数with_if_function
使用了一个调用表达式,它保证先将其所有操作数子表达式求值,然后再将结果作为参数应用于if_function
。
因此,即使cond
返回False
,函数true_func
也会被调用。当我们调用时true_func
,我们打印出Welcome to
。然后,当我们调用false_func
时,我们也会打印61A
。
相比之下,如果 cond
返回False
,with_if_statement
永远不会调用true_func
。因此,我们只会调用false_func
打印61A
。
问题4
这个程序会导致无限循环,因为x
总是大于 0,而x / 0
永远不会被执行。我们也知道here!
永远不会打印,因为在调用function square(x)
之前必须求值操作数so_slow(5)
。
问题5
def is_prime(n):
"""
>>> is_prime(10)
False
>>> is_prime(7)
True
"""
"*** YOUR CODE HERE ***"
if n == 1:
return True
else:
for i in range(2, n):
if n % i == 0:
return False
return True
问题6
def fizzbuzz(n):
"""
>>> result = fizzbuzz(16)
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
>>> result == None
True
"""
"*** YOUR CODE HERE ***"
for i in range(1, n+1):
if i % 3 == 0 and i % 5 == 0:
print('fizzbuzz')
elif i % 3 == 0:
print('fizz')
elif i % 5 == 0:
print('buzz')
else:
print(i)
要为从 1 到n
的每个数字打印一些内容,我们可以使用循环遍历每个数字,然后使用if-elif-else
检查哪些情况适用以确定要打印的内容。
学生应该注意他们if-elif
语句的顺序:我们要首先检查是否i
可以被 3 和 5 整除,否则如果学生首先检查了 3 的可除性就会输出“fizz”(如果学生首先检查了 5 的可除性则是“buzz”),而不是“fizzbuzz”。
问题7
我们首先把11 % 4
求值的结果赋值给x
。然后我们绑定y
到x
的当前值(我们可以通过在当前环境图中查找它来确定)。最后,我们想更新x
为当前x
的值的平方。
问题8
我们首先定义两个函数double
和triple
,每个函数都绑定到它们对应的名称。在下一行中,我们将名称hat
赋给double
引用的函数对象。最后,我们将double
名称赋给triple
引用的函数对象。
留言