无法确定某些输入中的字符串计数行为

时间:2019-02-13 18:07:06

标签: python python-3.x

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来增加计数,我无法弄清楚。任何建议将非常有帮助。

3 个答案:

答案 0 :(得分:3)

使用:

count += 1

代替

count += string.count(sub_string, idx)

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

您需要的是在每次迭代中将count递增1,如果进行此更改,则输出3。

答案 1 :(得分: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)

答案 2 :(得分:-3)

如果您想获取字符串的长度,只需使用

len(string)