零基础学习Python018那节课统计字符串频率的课后题相关问题
亲爱滴鱼油们:大家好吖!肉包子关于课后题有一个问题想不明白,小甲鱼的代码我能看懂,但是我自己的代码错在哪里我是怎么也想不通,还想麻烦大家帮忙看看是哪里出了问题呢?
新手入门,大概问题会比较低级,还请 多多包涵啦~
题目是要求返回子字符串在目标字符串里出现的次数:
这是肉包子我的代码啦:
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 == aim: # 如果字符串切片 obj 与 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) , '次') 你这是迭代 obj,因为 obj 的长度是 14,而每次迭代 count 加 1,所以 count 为 14。你应该这样改:
obj = input('请输入目标字符串:')
aim = input('请输入子字符串(两个字符):')
count = obj.count(aim)
print('子字符串在目标字符串中共出现',count,'次') zltzlt 发表于 2019-11-16 20:19
你这是迭代 obj,因为 obj 的长度是 14,而每次迭代 count 加 1,所以 count 为 14。你应该这样改:
我懂惹!谢谢您!!~ jackz007 发表于 2019-11-16 20:07
14 是字符串 obj 的总长度,因为 for aim in obj 这个语句将会按单个字符,而不是按楼主所预期的 2 个 ...
你字多讲得还有道理!听你的!谢谢~好细心嗷! jackz007 发表于 2019-11-16 20:07
14 是字符串 obj 的总长度,因为 for aim in obj 这个语句将会按单个字符,而不是按楼主所预期的 2 个 ...
嗷好心人我刚test了一下你帮我修改后的代码怎么都返回是0来着QAQ
另外如果您愿意的话可不可以用#号帮我写个注释呢~ 本帖最后由 jackz007 于 2019-11-16 21:45 编辑
一只鸡腿肉包子 发表于 2019-11-16 20:58
嗷好心人我刚test了一下你帮我修改后的代码怎么都返回是0来着QAQ
另外如果您愿意的话可不可以用#号帮我 ...
不好意思,那份代码有个小问题,每次枚举的字符串切片的长度与 aim 不相等,所以造成最终找到次数是 0 的结果。代码已经修正,并按楼主要求,全文添加了详细注释。
说明一下,这个代码并不限于查找 2 个字符,长度可以不限。
jackz007 发表于 2019-11-16 21:42
不好意思,那份代码有个小问题,每次枚举的字符串切片的长度与 aim 不相等,所以造成最终找到次 ...
{:9_221:}天哪噜真的太感谢了!!谢谢你的帮助和耐心!!对于一个Python入门的小菜鸡来说真的帮助太大啦!!
页:
[1]