|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
亲爱滴鱼油们:
大家好吖!肉包子关于课后题有一个问题想不明白,小甲鱼的代码我能看懂,但是我自己的代码错在哪里我是怎么也想不通,还想麻烦大家帮忙看看是哪里出了问题呢?
新手入门,大概问题会比较低级,还请 多多包涵啦~
题目是要求返回子字符串在目标字符串里出现的次数:
这是肉包子我的代码啦:
obj=input('请输入目标字符串:')
aim=input('请输入子字符串(两个字符):')
count=0
for aim in obj:
count+=1
print('子字符串在目标字符串中共出现',count,'次')
但是这样返回的是一个奇奇怪怪怎么都想不明白的数字……
返回的效果是这样的:
请输入目标字符串:我爱吃包子,肉包子,菜包子。
请输入子字符串(两个字符):包子
子字符串在目标字符串中共出现 14 次
讲道理我是真的想不明白这个14是怎么来的吖!
谢谢大家的帮助了ouo感恩!
本帖最后由 jackz007 于 2019-11-16 21:39 编辑
14 是字符串 obj 的总长度,因为 for aim in obj 这个语句将会按单个字符,而不是按楼主所预期的 2 个字符那样来枚举 obj。
应该这么修改:
- obj = input('请输入目标字符串:') . strip() # 获取键盘输入,用 strip() 去掉字符串首尾的空白字符
- aim = input('请输入子字符串(两个字符):') . strip() # 获取键盘输入,用 strip() 去掉字符串首尾的空白字符
- count , i = 0 , 0 # 目标计数 count 和循环变量 i 赋初值 0
- while i < len(obj) - len(aim) + 1 : # 从下标 0 开始,在字符串 obj 中循环查找 aim
- if obj[i : i + len(aim)] == aim: # 如果字符串切片 obj[i : i + len(aim)] 与 aim 相等
- count += 1 # 目标计数加 1
- i = i + len(aim) # 循环变量 i 步进 len(aim) 个字符
- else: # 否则,如果二者不相等
- i += 1 # 循环变量步进 1 个字符
- print('子字符串在目标字符串中共出现' , count , '次') # 显示最终的寻找结果
复制代码
当然,最简洁的代码是这样:
- obj = input('请输入目标字符串:') . strip()
- aim = input('请输入子字符串(两个字符):') . strip()
- print('子字符串在目标字符串中共出现' , obj . count(aim) , '次')
复制代码
|
|