实话实说,CS61A的tex是真长啊,而且这个翻译软件翻译的很硬,所以有些地方看的不太明白;
这次的讨论课,其实还是ch.1.6的延伸,ch1.6里面主要介绍了高阶方法;这里面主要还是讨论方法的frame(翻译成框架,我怎么老是觉得这么翻译不太行),和环境;
-
Jacket Weather
这一题,很简单,判断真假就行;
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 temp < 60 or raining :
return True
else :
return False
-
Is Prime
这一题,其实就是质数的判断;这一题,不得不说我的代码写的是真难看。首先判断是否为1 ,然后循环判断是否能够整除,如果能够判断被整除,则判断这个值是否和当前值相等,如果相等则返回真,否则返回假;
我一直想把这一行删除if n == i: 这一行删除,但是不太现实;
def is_prime(n):
"""
>>> is_prime(10)
False
>>> is_prime(7)
True
>>> is_prime(1) # one is not a prime number!!
False
"""
"*** YOUR CODE HERE ***"
i = 2
if n == 1:
return False
else:
while n % i :
i += 1
if n == i: # 这一行删除
return True
return False
-
Fizzbuzz
实现Fizzbuzz 序列,我原本的做法是使用穿透跳三个if判断,因为我看到能狗被15整除返回的值,其实就是被3整除,和被5整除的拼接。但是Print是换行的,而且15也会被打印下来,所以这个是错误的;
def fizzbuzz(n):
i = 1
while i <= n:
if i % 3 == 0:
print('fizz')
if i % 5 == 0:
print('buzz')
if (i % 3 == 0 or i % 5 !=0) or (i % 5 == 0 or i % 3 !=0):
print(i)
i += 1
正确做法就是分三种情况判断,把三种情况排除的就是需要打印的值;
def fizzbuzz(n):
"""
>>> result = fizzbuzz(16)
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
>>> result is None # No return value
True
"""
"*** YOUR CODE HERE ***"
i = 1
while i <= n:
if i % 15 == 0:
print('fizzbuzz')
elif i % 5 == 0 :
print('buzz')
elif i % 3 == 0 :
print('fizz')
else :
print(i)
i += 1