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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值