# Lab 01
# Quick Logistics Review
之前使用过命令行来测试程序,但是很多参数其实没有介绍,这里提供了介绍。
以下是一些我的总结,想要查看更多的信息还请查看网站获取。
python3 -i在命令行中创建一个python3 的一个交互使用方式。
lab 提供提供了测试用例,ok 程序就是用来判定程序是否正确。
python3 ok -q <specified function>指定一个函数可以调用其注释部分的 doctests 来测试。
默认情况下是只显示错误的哪个用例没有通过,加上参数 -v 后可以查看所有的情况,例如成功通过的例子。
python3 ok -v
# What Would Python Display? (Part 1)
# Q1: WWPD: Control
代码太长了,去厂库看吧:https://github.com/weijiew/cs61a/blob/master/lab/lab01/tests/control.py
# Q2: WWPD: Veritasiness
同上:https://github.com/weijiew/cs61a/blob/master/lab/lab01/tests/short-circuit.py
# Q3: Debugging Quiz!
debugg 方面的知识,一共 12 道题!
答案:https://github.com/weijiew/cs61a/blob/master/lab/lab01/tests/debugging-quiz.py
# Q4: Fix the Bug
def both_positive(a, b):
return (a > 0) and (b > 0) # You can replace this line!
1
2
2
# Q5: Sum Digits
题意就是将一个非负整数的每一位拆分然后累加。
def sum_digits(x):
sum = 0
while x != 0:
sum += int(x % 10)
x /= int(10)
return sum
1
2
3
4
5
6
2
3
4
5
6
# Optional Questions
以下是选作的题目:
# What Would Python Display? (Part 2)
# Q6: WWPD: What If?
其实考的就是一点,函数是原样返回值,而 print 则是带有转义。如下:
k = "aaa"
def a(k):
return k # "aaa"
print(k) # aaa
1
2
3
4
5
6
2
3
4
5
6
# Q7: Falling Factorial
def falling(n, k):
sum = 1
while k:
sum *= n
n -= 1
k -= 1
return sum
1
2
3
4
5
6
7
2
3
4
5
6
7
# Q8: Double Eights
def double_eights(n):
return '88' in str(n)
1
2
2
这个写法有点取巧了,下面有个循环的写法。
def double_eights(n):
while n != 0:
if n % 100 == 88:
return True
n //= 10
return False
1
2
3
4
5
6
2
3
4
5
6