rari 发表于 2020-8-19 15:48:02

这个for 后面的length为什么要-1啊

我又来了{:10_266:}

zltzlt 发表于 2020-8-19 15:49:29

因为 range(length - 1) 表示从 0 ~ length - 2 之间的数字。如果是 range(length) 就表示 0 ~ length - 1 的数字。如果写成 range(length),那当 each1 为 length - 1 时,后面判断 desStr 就会越界

永恒的蓝色梦想 发表于 2020-8-19 16:09:10

楼上正解

rari 发表于 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 ,发现两个结果居然是一样的。。。

zltzlt 发表于 2020-8-19 17:11:06

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

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

请输入目标字符串:asdasdasdasd
请输入子字符串(两个字符):da
Traceback (most recent call last):
File "xxx", line 19, in <module>
    findStr(desStr, subStr)
File "xxx", line 10, in findStr
    if desStr == subStr:
IndexError: string index out of range

zltzlt 发表于 2020-8-19 17:16:27

zltzlt 发表于 2020-8-19 17:11
不会所有数据都不会报错,比如:

补充:因为目标字符串的最后一个字符和子字符串的第一个字符相同,所以进入了第二个 if,导致越界,报错
页: [1]
查看完整版本: 这个for 后面的length为什么要-1啊