|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是这样子的:
编写一个函数findstr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为”You cannot improve your past, but can improve your future. Once time is wasted, life is wasted.”,子字符串为”im”,函数执行后打印”子字母串在目标字符串中共出现3次”。
- def findStr(desStr, subStr):
- count = 0
- length = len(desStr)
- if subStr not in desStr:
- print('在目标字符串中未找到字符串!')
- else:
- for each1 in range(length-1):
- if desStr[each1] == subStr[0]:
- if desStr[each1+1] == subStr[1]:
- count += 1
-
- print('子字符串在目标字符串中共出现 %d 次' % count)
- desStr = input('请输入目标字符串:')
- subStr = input('请输入子字符串(两个字符):')
- findStr(desStr, subStr)
复制代码 这是甲老师的代码,我有几个疑点,第一个是for each1 in range(length-1): 这里的length-1是什么意思呢?我把的直接用length好像也没有影响啊。第二个是 if desStr[each1+1] == subStr[1]:,这里的each1+1是什么意思呢,我不加1就是0次,加了就是3次,为什么呢?
第一个疑问:为什么是 length - 1
因为子字符串的长度为 2 ,所以只要检测到目标字符串的倒数第二个就要停止,否则在后面进行字符串比对的时候索引值就会溢出报错。
第二个疑问:if desStr[each1 + 1] == subStr[1],这里的 each + 1 是什么意思?
这条语句是与上条语句配合使用的,不能单独看。第一个 if 语句意思是:如果目标字符串中索引值为 each1 的字符等于子字符串中索引值为 0 的字符,那么就进入第二个 if 语句:如果目标字符串中索引值为 each1 + 1 的字符也等于子字符串中索引值为 1 的字符(其实就是说,两个连续的字符正好等于子字符串,那么就符合条件),那么 count 就加1(计数)
|
|