鱼C论坛

 找回密码
 立即注册
查看: 1588|回复: 5

[已解决]这个for 后面的length为什么要-1啊

[复制链接]
发表于 2020-8-19 15:48:02 | 显示全部楼层 |阅读模式

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

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

x
我又来了
最佳答案
2020-8-19 17:16:27
zltzlt 发表于 2020-8-19 17:11
不会所有数据都不会报错,比如:

补充:因为目标字符串的最后一个字符和子字符串的第一个字符相同,所以进入了第二个 if,导致越界,报错
WechatIMG166.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-19 15:49:29 | 显示全部楼层
因为 range(length - 1) 表示从 0 ~ length - 2 之间的数字。如果是 range(length) 就表示 0 ~ length - 1 的数字。如果写成 range(length),那当 each1 为 length - 1 时,后面判断 desStr[each1 + 1] 就会越界
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-19 16:09:10 | 显示全部楼层
楼上正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 17:03:55 | 显示全部楼层
zltzlt 发表于 2020-8-19 15:49
因为 range(length - 1) 表示从 0 ~ length - 2 之间的数字。如果是 range(length) 就表示 0 ~ length - 1  ...

呃,我把length-1改为了 length ,子字符还是im 然后也没有报错 也是3次;然后我把im 换成了 d . (就是目标字符串的结尾),也是可以循环到,出现次数是1次,然后我有把length改成了length-1 ,发现两个结果居然是一样的。。。
WechatIMG630.png
WechatIMG631.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-19 17:11:06 | 显示全部楼层
rari 发表于 2020-8-19 17:03
呃,我把length-1改为了 length ,子字符还是im 然后也没有报错 也是3次;然后我把im 换成了 d . (就是 ...

不会所有数据都不会报错,比如:

  1. 请输入目标字符串:asdasdasdasd
  2. 请输入子字符串(两个字符):da
  3. Traceback (most recent call last):
  4.   File "xxx", line 19, in <module>
  5.     findStr(desStr, subStr)
  6.   File "xxx", line 10, in findStr
  7.     if desStr[each1 + 1] == subStr[1]:
  8. IndexError: string index out of range
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-19 17:16:27 | 显示全部楼层    本楼为最佳答案   
zltzlt 发表于 2020-8-19 17:11
不会所有数据都不会报错,比如:

补充:因为目标字符串的最后一个字符和子字符串的第一个字符相同,所以进入了第二个 if,导致越界,报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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