鱼C论坛

 找回密码
 立即注册
查看: 1146|回复: 6

[已解决]第十五讲的最后一题不太懂

[复制链接]
发表于 2018-1-23 20:33:03 | 显示全部楼层 |阅读模式

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

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

x
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)


第七行,为什么each要加个1?length为什么要加个“-1”?
去掉他们运行还会报错
最佳答案
2018-1-23 21:06:30
phantastar 发表于 2018-1-23 21:00
我还是看不懂,length这个变量是用来干什么的,我加了一条print(len(desStr))结果它只是显示desStr的 ...

length是为了带入索引值,即字符串下标,
-1是为了each1+1最多为length-1,
比如列表L=[1,2,3],长度3,索引值最大的元素是L[2]而不是L[3]
因为索引值从0开始数不是从1开始
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-1-23 20:34:42 | 显示全部楼层
错了!是第十八讲
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 20:50:12 | 显示全部楼层
phantastar 发表于 2018-1-23 20:34
错了!是第十八讲

1.去掉 1 并不会报错,除非你没把下面的each1里的 1 也去掉;
2.去掉length-1的 -1会报错,因为你判断的子字符串是两个字符的,你下面有个判断语句 if desStr[each1+1] == subStr[1],如果是 length 而不是length - 1 就会超出原始字符串的长度。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 21:00:25 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-1-23 20:50
1.去掉 1 并不会报错,除非你没把下面的each1里的 1 也去掉;
2.去掉length-1的 -1会报错,因为你判断的 ...

我还是看不懂,length这个变量是用来干什么的,我加了一条print(len(desStr))结果它只是显示desStr的字符长度
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 21:06:30 | 显示全部楼层    本楼为最佳答案   
phantastar 发表于 2018-1-23 21:00
我还是看不懂,length这个变量是用来干什么的,我加了一条print(len(desStr))结果它只是显示desStr的 ...

length是为了带入索引值,即字符串下标,
-1是为了each1+1最多为length-1,
比如列表L=[1,2,3],长度3,索引值最大的元素是L[2]而不是L[3]
因为索引值从0开始数不是从1开始
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 21:10:15 | 显示全部楼层
phantastar 发表于 2018-1-23 21:00
我还是看不懂,length这个变量是用来干什么的,我加了一条print(len(desStr))结果它只是显示desStr的 ...

例如:a = "123456",长度为6,
for i in range(length):
  print(a[i])
就把 a 里的每个字符打印出来了。这个长度就是用来判断字符串里的字符个数的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 21:12:38 | 显示全部楼层
塔利班 发表于 2018-1-23 21:06
length是为了带入索引值,即字符串下标,
-1是为了each1+1最多为length-1,
比如列表L=[1,2,3],长度3, ...

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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