string = input("Enter the string: ")
sub_string = input("Enter sub string: ")
count = 0
idx = 0
while string.count(sub_string, idx) != 0:
count += string.count(sub_string, idx)
idx = string.index(sub_string, idx)
idx += 1
if string.count(sub_string, idx) == 0:
print(count)
break
当我给这个代码输入如下:
ininini
ini
它打印输出4
。我尝试运行调试器,发现它在第一步用+2
而不是+1
递增计数,我无法弄清楚。任何建议都会非常有用。
采用:
count += 1
代替
count += string.count(sub_string, idx)
string.count(sub_string, idx)
最初是2,这就是为什么你最终在第一次迭代中添加2(而不是预期的1),从而获得比预期更多的1。
你需要的是在每次迭代中将count
增加1,如果你做了这个改变,你得到3作为输出。
我会使用for
循环代替:
string = input("Enter the string: ")
sub_string = input("Enter sub string: ")
count = 0
for index in range(len(string) - len(sub_string) + 1):
if string[index: index + len(sub_string)] == sub_string:
count += 1
print(count)
如果你想达到获得字符串的长度,只需使用
len(string)