如何在Python3中使用for循环计算字符串中的字数

如何在Python3中使用for循环计算字符串中的字数,python,arrays,string,python-3.x,Python,Arrays,String,Python 3.x,我试图编写一个for循环,在字符串中查找特定的单词。我知道python中有一个单行程序可以实现这一点,但我正在练习for循环,我想看看如何使用for识别特定的单词,因为它可以识别特定的字母(如元音)。我一直在阅读一些问题,我认为代码应该是这样的: s='bananasdasdnansbanana' b='banana' def count_words(s,b): answer = 0 for i in range(len(s)): if any(s[i:].sta

我试图编写一个for循环,在字符串中查找特定的单词。我知道python中有一个单行程序可以实现这一点,但我正在练习for循环,我想看看如何使用for识别特定的单词,因为它可以识别特定的字母(如元音)。我一直在阅读一些问题,我认为代码应该是这样的:

s='bananasdasdnansbanana'
b='banana'
def count_words(s,b):
    answer = 0
    for i in range(len(s)):
        if any(s[i:].startswith(b) for b in s):
           answer += 1
    print(answer)
但它没有打印任何东西。我在寻找同一个字符串中的元音时也做了类似的事情,但现在我知道我需要“排列”单词“香蕉”中的字符,然后将其与字符串进行比较,这是本部分的主题:

if any(s[i:].startswith(b) for b in s):
如果你能帮助我,我会非常感激的


谢谢。

如果您的目标是使用for循环,您可以找到要查找的单词的长度,然后检查较大字符串中相同长度的部分,看看它们是否匹配。您不需要使用
任何
,除非您有意这样做。大概是这样的:

s='bananasdasdnansbanana'
b='banana'
def count_words(s,b):
    answer = 0
    for i in range(len(s)):
        if any(s[i:].startswith(b) for b in s):
           answer += 1
    print(answer)
s='bananasdasdnasbana'
“香蕉”
def计数_字(s、b):
字长=长度(b)
答案=0
对于范围(len(s)-len(b)+1内的i:
如果s[i:i+字长]==b:
答案+=1
回覆
统计字数(s、b)
注意:我还将您的
打印
更改为
返回
。这两种方法都有效

  • 您的代码不会打印,因为您没有调用
    函数(您只定义它)
    ,您应该通过在末尾添加命令来调用函数:

    count_单词(s,b)
    
  • 函数实际计算字符串s中的字符数:

    s='bananasdasdnasbana'
    “香蕉”
    def计数_字(s、b):
    答案=0
    #在s中的每个字符上循环
    对于范围内的i(len(s)):
    #创建至少包含当前字符的列表=>any将始终返回True
    如果有(s[i:]项,则从(b)项开始:
    答案+=1
    打印(答案)
    
  • 右代码:

    s='bananasdasdnasbana'
    “香蕉”
    def计数_字(s、b):
    答案=0
    对于范围内的i(len(s)):
    如果s[i::]与(b)一起启动:
    答案+=1
    打印(答案)
    统计字数(s、b)
    

  • 上述算法首先至少检查一次s中是否存在香蕉。然后,它将循环查找计数。

    旁注:如果您正在练习循环,为什么要使用
    any
    <代码>任何实际上只是一个隐藏的循环。我不知道这一点。谢谢。另外,请正确格式化代码(点击编辑按钮)。目前缩进不正确。我正在学习python,您的回答不仅帮助我解决了问题,还帮助我理解了我的错误。非常感谢。这是我的荣幸:)