我试图弄清楚如何计算一个字符串出现在另一个字符串中的次数。我试图使用并使用过的代码到目前为止还没有奏效。
needle = input()
haystack = input()
count = 0
for needle in haystack:
count += 1
print(count)
我的预期结果如果干草堆的输入是' sesses'并且针是' ses'将打印出2.(ses在大海捞针两次)
答案 0 :(得分:1)
'sesses'.count('ses') will give you the answer
答案 1 :(得分:1)
for needle in haystack:
count += 1
这不起作用的原因是“for x in y”迭代y中的值,并且/将它们/放入x;它不读取x。因此,在您的代码示例中,您正在迭代haystack(在Python中,意味着循环遍历每个字母),然后将值(每个字母)放入针中。这不是你想要的。
没有内置的迭代器可以提供你想要的东西 - 另一个字符串出现的迭代器。 haystack.count(针)会给你想要的答案;除此之外,您还可以使用haystack.find查找从给定点开始的事件,并自己跟踪您在字符串中的位置:
index = haystack.find(needle)
while index >= 0:
count += 1
index = haystack.find(needle, index + 1)
请注意,这将给出与haystack.count不同的答案:haystack.count将永远不会计算两次字母,而上述将会。所以“aaaaaa”.count(“aaa”)将返回2(发现“ aaa aaa”和“aaa aaa ”),但上面的代码将返回4,因为它会找到“ aaa aaa”,“ aaa aa”,“aa aaa a”和“aaa aaa 强>”。
答案 2 :(得分:1)
使用count()
needle = input()
haystack = input()
print haystack.count(needle)
答案 3 :(得分:1)
试试这个:)
characters = 'ses'
word = 'sesses'
chunkSize = 1
count = 0
while chunkSize < len(word):
for i in range(len(word) - chunkSize + 1):
if word[i:chunkSize+i] == characters:
count += 1
chunkSize += 1
print(count)
答案 4 :(得分:0)
这应该有效:
a='seses'
b='se'
print a.count(b)
>>2