麻省理工学院公开课:计算机科学及编程导论习题3上

习题1:

写两个函数,分别叫calledcountSubStringMatch(使用迭代计数关键词)和countSubStringMatchRecursive(使用递归计数关键词);

必须按照下面方式定义。

def countSubStringMatch(target,key):

def countSubStringMatchRecursive(target, key):


def countSubStringMatch(target, key):
	count = 0
	order = 0
	while target.find(key, order) != -1:
		order = target.find(key, order) + 1
		count = count + 1
	return count
	

from string import find
		
def countSubStringMatchRecursive(target, key):
	count = 0
	if find(target, key) == -1:
		return count
	else:
		order = find(target, key) + 1
		count = countSubStringMatchRecursive(target[order:], key) + 1
		return count

递归不是很直觉,感觉非常蛋疼。


习题2:

写一个函数subStringMatchExact,返回找到关键词的起始位置的元组。

按照下面方式定义。

def subStringMatchExact(target,key)

from string import find
		
def subStringMatchExact(target, key):
	tuple = ()
	order = 0
	while find(target, key, order) != -1:
		tuple = tuple + (find(target, key, order),)
		order = find(target, key, order) + 1
	return tuple
		
target1 = 'atgacatgcacaagtatgcat'
target2 = 'atgaatgcatggatgtaaatgcag'

key10 = 'a'
key11 = 'atg'
key12 = 'atgc'
key13 = 'atgca'

print subStringMatchExact(target1, key10)
print subStringMatchExact(target1, key11)
print subStringMatchExact(target1, key12)
print subStringMatchExact(target1, key13)

print subStringMatchExact(target2, key10)
print subStringMatchExact(target2, key11)
print subStringMatchExact(target2, key12)
print subStringMatchExact(target2, key13)


target = raw_input("Please enter a target. ")
key = raw_input("Please enter a key word. ")

print subStringMatchExact(target, key)


第八行,我原本用的  order = find(target, key, order) + len(key)

但如果是"aaabb"中找"aa",那这样就会错过从1开始"aa";而且如果key为空的话会死循环...





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值