查找字符串中出现单词的次数

时间:2017-07-12 21:54:55

标签: python string for-loop if-statement

因此,例如,如果我想知道这个单词中发生问候的次数: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) 

4 个答案:

答案 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