【发布时间】:2020-06-03 19:36:38
【问题描述】:
目标是如果子串“cat”在str中出现的次数等于子串“dog”在str中出现的次数,则返回True。
我已经使用内置的str.count(sub) method 解决了这个问题,但现在我必须使用 1 个循环。这不是作业问题,只是为了我自己的练习。
不起作用的测试用例:
cat_dog('catxxdogxxxdog') --> True (should return False)
cat_dog('catxdogxdogxca') --> True (should return False)
cat_dog('dogdogcat') --> True (should return False)
谢谢!
def cat_dog(str):
count1 = 0
count2 = 0
sub1 = 'cat'
sub2 = 'dog'
a = [sub1, sub2]
if sub1 not in str and sub2 not in str:
return True
elif sub1 in str and sub2 not in str:
return False
elif str == '':
return True
for sub in a:
if sub1 in str:
count1 += 1
if sub2 in str:
count2 += 1
if count1 == count2:
return True
else:
return False
else:
return False
【问题讨论】:
-
if sub2应与if sub1处于同一级别,if count应与for level处于同一级别 -
您是否使用过调试器查看为什么在这些情况下它返回
True? -
不,我没有。即使调整缩进也不能解决问题。
-
如果您不知道为什么会失败,您希望如何解决?
标签: python for-loop count substring