我正在尝试编写一个代码,该代码查找给定字符串的子字符串的位置。我认为循环中存在一些问题,事实证明这是一个无限循环。
string="ABCDCDC"
sub_str="CDC"
i=0
while i<len(string):
if sub_str in string:
i=string.find(sub_str,i)
print("Position is {}".format(i))
else:
break
i+=1
我得到的实际输出:
Position is 2
Position is 4
Position is -1
Position is 2
Position is 4
Position is -1
Position is 2
Position is 4
Position is -1
预期输出:
Position is 2
Position is 4
答案 0 :(得分:0)
您正在覆盖“ i”,因此它变成了无限循环。其次,您可以使用列表来保留索引(满足成功条件的索引)的引用,以避免重新打印索引以及-1。这是您代码的改进。
string = "ABCDCDC"
sub_str = "CDC"
i = 0
list = []
size = len(string)
while i < size:
if sub_str in string:
pos = string.find(sub_str, i, size)
if pos != -1 and pos not in list:
print("Position is {}".format(pos))
list.append(pos)
else:
break
i += 1