调试
1希望缩小可能的错误源的空间。
2暴露中间阶段的设计实验(使用print),并利用结果进一步缩小搜索范 围。
3二进制搜索可以成为这方面的一个强大工具。
教授的代码 (二分法和print使用)
def isPal(x):
assert type(x) == list
temp = x[:]
print(temp, x)
temp.reverse()
print(temp, x)
if temp == x:
return True
else:
return False
def silly(n):
result = []
for i in range(n):
elem = raw_input('Enter element: ')
result.append(elem)
if isPal(result):
print(‘Yes’)
else:
print(‘No’)
更正后
def isPal(x):
assert type(x) == list
temp = x[:]
print(temp, x) #
temp.reverse()
print(temp, x) #
if temp == x:
return True
else:
return False
def silly(n):
result = [] #第一处将循环里的result
for i in range(n):
elem = raw_input('Enter element: ')
result.append(elem)
if isPal(result):
print(‘Yes’)
else:
print(‘No’)
错误调试的提示
Look for the usual suspects
• Ask why the code is doing what it is, not why it
is not doing what you want
• The bug is probably not where you think it is –
eliminate locations
• Explain the problem to someone else
• Don’t believe the documentation
• Take a break and come back to the