length-1
def findStr(desStr, subStr):count = 0
length = len(desStr)
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else:
for each1 in range(length-1): 这里为什么要减1
if desStr == subStr:
if desStr == subStr:
count += 1
print('子字符串在目标字符串中共出现 %d 次' % count)
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
本帖最后由 墨羽岚 于 2020-4-5 16:21 编辑
wbzd但是我去掉了那个-1也能正常运行
请输入目标字符串:213343134
请输入子字符串(两个字符):34
子字符串在目标字符串中共出现 2 次
请输入目标字符串:ioioiouuu
请输入子字符串(两个字符):oi
子字符串在目标字符串中共出现 2 次 因为len是以1往后的,而索引是以0开头
所以要减一 如果不减 1 就会出错,因为访问了 desStr+1] qiuyouzhi 发表于 2020-4-5 16:47
因为len是以1往后的,而索引是以0开头
所以要减一
理解了{:5_109:} 本帖最后由 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) txxcat 发表于 2020-4-6 14:03
你确信理解了?你选的答案是错误的,zltzlt的答案是对的!之所以要lenth-1是因为题目要判断2个字符,所以 ...
好像有道理,如果遍历最后一个就会超出范围了,是吗?{:10_272:} 永远的渣滓 发表于 2020-4-6 14:09
好像有道理,如果遍历最后一个就会超出范围了,是吗?
不是的,上面的代码错了点,现在修正了,其中a有9个字符,
for i in rang(9),i的范围是0-8,不包含9,所以不会有超出范围的问题。 txxcat 发表于 2020-4-6 14:17
不是的,上面的代码错了点,现在修正了,其中a有9个字符,
for i in rang(9),i的范围是0-8,不包含9, ...
哦哦
页:
[1]