鱼C论坛

 找回密码
 立即注册
查看: 2231|回复: 8

[已解决]length-1

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

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

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

x
  1. def findStr(desStr, subStr):
  2.     count = 0
  3.     length = len(desStr)
  4.     if subStr not in desStr:
  5.         print('在目标字符串中未找到字符串!')
  6.     else:
  7.         for each1 in range(length-1):                                               这里为什么要减1
  8.             if desStr[each1] == subStr[0]:
  9.                 if desStr[each1+1] == subStr[1]:
  10.                     count += 1
  11.                     
  12.         print('子字符串在目标字符串中共出现 %d 次' % count)

  13. desStr = input('请输入目标字符串:')
  14. subStr = input('请输入子字符串(两个字符):')
  15. findStr(desStr, subStr)
复制代码
最佳答案
2020-4-5 16:47:36
因为len是以1往后的,而索引是以0开头
所以要减一
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-5 16:20:46 | 显示全部楼层
本帖最后由 墨羽岚 于 2020-4-5 16:21 编辑

wbzd但是我去掉了那个-1也能正常运行
  1. 请输入目标字符串:213343134
  2. 请输入子字符串(两个字符):34
  3. 子字符串在目标字符串中共出现 2 次
复制代码
  1. 请输入目标字符串:ioioiouuu
  2. 请输入子字符串(两个字符):oi
  3. 子字符串在目标字符串中共出现 2 次
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 16:47:36 | 显示全部楼层    本楼为最佳答案   
因为len是以1往后的,而索引是以0开头
所以要减一
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 17:18:26 | 显示全部楼层
如果不减 1 就会出错,因为访问了 desStr[each1+1]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 17:35:35 | 显示全部楼层
qiuyouzhi 发表于 2020-4-5 16:47
因为len是以1往后的,而索引是以0开头
所以要减一

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

使用道具 举报

发表于 2020-4-6 14:03:58 From FishC Mobile | 显示全部楼层
本帖最后由 txxcat 于 2020-4-6 14:14 编辑
永远的渣滓 发表于 2020-4-5 17:35
理解了


你确信理解了?你选的答案是错误的,zltzlt的答案是对的!之所以要lenth-1是因为题目要判断2个字符,所以找第一个字符只用遍历到倒数第二个字符,如果不减1,遍历到最后一个字符,下面的代码each1+1就会真正出现“out of range”。
运行这段代码来理解一下range():
a='123456789'
for i in range(lenth(a)):
    print(i,a[i])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 14:09:02 | 显示全部楼层
txxcat 发表于 2020-4-6 14:03
你确信理解了?你选的答案是错误的,zltzlt的答案是对的!之所以要lenth-1是因为题目要判断2个字符,所以 ...

好像有道理,如果遍历最后一个就会超出范围了,是吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 14:17:53 From FishC Mobile | 显示全部楼层
永远的渣滓 发表于 2020-4-6 14:09
好像有道理,如果遍历最后一个就会超出范围了,是吗?

不是的,上面的代码错了点,现在修正了,其中a有9个字符,
for i in rang(9),i的范围是0-8,不包含9,所以不会有超出范围的问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 14:41:45 | 显示全部楼层
txxcat 发表于 2020-4-6 14:17
不是的,上面的代码错了点,现在修正了,其中a有9个字符,
for i in rang(9),i的范围是0-8,不包含9, ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 18:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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