例子很简单,但是关键是练习如何有效的用assert发现问题并提供有效反馈。
import sys
import traceback
def linearSearch(iter, s):
try:
#iter should be iterable
assert type(iter) == list or type(iter) == tuple
#iter should not be empty
assert len(iter) > 0
#all elemnts in iter should be in the same type
assert len(set([type(x) for x in iter])) == 1
#the element to be looked for should be corresponding type
assert type(s) == type(iter[0])
except AssertionError:
_, _, tb = sys.exc_info()
traceback.print_tb(tb) # Fixed format
tb_info = traceback.extract_tb(tb)
filename, line, func, text = tb_info[-1]
print('An error occurred on line {} in statement {}'.format(line, text))
return "asster failed"
n = len(iter)
for i in range(n):
if iter[i] == s:
return i
return "not found"
a = (200,9,8,3,6,5,4,2,7,1,15,13,12,199)
print(linearSearch(a, 199))
#error calls
print(linearSearch('abc', 12))
print(linearSearch([], 12))
print(linearSearch(a, '12'))
print(linearSearch(['a',2,12], 12))