因此,例如,如果我想知道这个单词中发生问候的次数:hellohellothere
,我的代码将给我2
这是正确的。但如果我有hellotherehello
,我的代码不会给我2
,这意味着我认为我的第二个for循环有问题。
我的代码计算字符串中字母的数量,然后我将它除以字符串的长度,以给出字符串实际发生的次数,但我不认为这确实是问题。
这是代码。
word = input("Enter a word: ")
find = input("Enter string to find")
count = int(0)
for x in range(0, len(word)-len(find)):
if word[x] == find[0]:
for i in range(0, len(find)):
if word[x+i] == find[i]:
count += 1
else: break
count = count/len(find)
print("Number of times it occurs is: ", count)
答案 0 :(得分:1)
你的问题在于它认为'他'这个词中的'他'是你好的开始并且算作计数。
答案 1 :(得分:1)
其他答案推荐使用string.count函数,这就是具有标准库知识的有经验的Python程序员如何做到这一点。但是,如果我看一下你的方法,我会看到逻辑错误。
你的主循环有一个一个错误。函数range(0, n)
从0迭代到n-1。在字符串' hellotherehello'这将在你第二次出现hello之前结束迭代一个字符。你想要的是:
for x in range(0, len(word)-len(find) + 1):
您尝试将变量count
用于两个不同的目的:计算成功匹配的数量,并在搜索匹配时逐个计算字符数。当您已经找到一个匹配项并开始寻找第二个匹配项时,您的count
变量保留值1;直到你找到它的第一个匹配为止。更好的是一次一个地测试一个字符用于FAILURE而不是SUCCESS,并使用Python的for:else:
构造。在循环内你将有这个:
if word[x] == find[0]:
for i in range(0, len(find)):
if word[x+i] != find[i]:
break
else:
count += 1
学习Python好运。
答案 2 :(得分:0)
Python有一个内置函数:count
print("Number of times it occurs is: ", word.count(find))
答案 3 :(得分:0)
您的问题的一个很好的答案是使用嵌套的 for 循环,但您的单词是一个单词,即 hellohellothere
,JavaScript 将其视为一个单词,但如果它是这样写的 hello hello there
或 {{ 1}} 为您提供解决方案
hello there hello