无法弄清楚某些输入中的字符串计数行为

问题描述 投票:2回答:3
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递增计数,我无法弄清楚。任何建议都会非常有用。

python python-3.x
3个回答
3
投票

采用:

count += 1

代替

count += string.count(sub_string, idx)

string.count(sub_string, idx)最初是2,这就是为什么你最终在第一次迭代中添加2(而不是预期的1),从而获得比预期更多的1。

你需要的是在每次迭代中将count增加1,如果你做了这个改变,你得到3作为输出。


0
投票

我会使用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)

-3
投票

如果你想达到获得字符串的长度,只需使用

len(string)
© www.soinside.com 2019 - 2024. All rights reserved.