鱼C论坛

 找回密码
 立即注册
查看: 922|回复: 12

求助18讲的一个题

[复制链接]
发表于 2020-4-14 09:41:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为“You cannot improve your past, but you 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:
      [color=DarkOrange]  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)

麻烦大佬们解释一下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-14 09:43:31 | 显示全部楼层
这是格式化字符串啊
就是把%后面的变量替换
前面写的格式化操作符
lz都学到这里了,这个还不会,
你再重头学一遍吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 10:10:03 | 显示全部楼层
就是简单的格式化字符串,把count的内容赋给前面的%d..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 13:08:53 | 显示全部楼层
这是格式化字符串,字符串中的 %d 表示占位符,用于格式化整数,将后面的 count 填充到 %d 那里。

如果忘记了如何格式化字符串,可以去复习复习:https://www.bilibili.com/video/BV1Fs411A7HZ?p=16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 16:44:28 | 显示全部楼层
qiuyouzhi 发表于 2020-4-14 09:43
这是格式化字符串啊
就是把%后面的变量替换
前面写的格式化操作符

不是 我不会的是中间的那一段
  for each1 in range(length-1):      
            if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
                    count +=1
这个
为什么第一段里面是range(length-1)而不是length
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 16:45:40 | 显示全部楼层
qiuyouzhi 发表于 2020-4-14 09:43
这是格式化字符串啊
就是把%后面的变量替换
前面写的格式化操作符

你这话咋这么酸呢 不会不该问吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 16:46:59 | 显示全部楼层
Lousy 发表于 2020-4-14 16:45
你这话咋这么酸呢 不会不该问吗

哎呀 不好意思我把你看成一层的家伙了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 16:47:32 | 显示全部楼层
qiuyouzhi 发表于 2020-4-14 09:43
这是格式化字符串啊
就是把%后面的变量替换
前面写的格式化操作符

我是不懂这个
  for each1 in range(length-1):      
            if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
                    count +=1
为什么是range(length-1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 17:07:41 | 显示全部楼层
Lousy 发表于 2020-4-14 16:46
哎呀 不好意思我把你看成一层的家伙了

?????一层的是你自己
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 19:21:42 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-14 17:07
?????一层的是你自己

不对不对 是二层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 19:22:40 | 显示全部楼层
Lousy 发表于 2020-4-14 19:21
不对不对 是二层

你连着回了二楼三次,我都不知道你想说什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 01:51:10 | 显示全部楼层
字符串的角标是从0开始的,打个比方来说,str=‘abc’,这个字符串的长度是3,但是取值的时候,你取的只能是str[0],str[1],str[2],而没有str[3],因为越界了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 18:24:38 | 显示全部楼层
岚冰1234 发表于 2020-4-15 01:51
字符串的角标是从0开始的,打个比方来说,str=‘abc’,这个字符串的长度是3,但是取值的时候,你取的只能 ...

哎呀一下明白了 谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 12:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表