1. 程式人生 > >Python實現線性搜尋

Python實現線性搜尋

例子很簡單,但是關鍵是練習如何有效的用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))