Python 在循环中处理字符串

Python 在循环中处理字符串,python,string,methods,Python,String,Methods,我正在尝试编写一个函数,它接受两个字符串参数,并返回第一个字符串中的字符在第二个字符串中出现的次数 我是python的完全初学者,我被难住了。如果有人能给我指出正确的方向那就太好了。我从以下几点开始: def occurrences(text1, text2): """Return the number of times characters from text1 occur in text2 occurrences(string, string) -> int

我正在尝试编写一个函数,它接受两个字符串参数,并返回第一个字符串中的字符在第二个字符串中出现的次数

我是python的完全初学者,我被难住了。如果有人能给我指出正确的方向那就太好了。我从以下几点开始:

def occurrences(text1, text2):
    """Return the number of times characters from text1 occur in text2

    occurrences(string, string) -> int
    """
    #Your code goes here
如您所见,需要两个字符串。我认为字符串1和字符串2就足够了,但我不知道如何定义它们

到目前为止,我已经开始这样做了,我甚至没有取得任何成功

for c in "string":
    print c
    if c == char c in "string2":
        count += 1
我只是加入了随机变量,因为我怎么能在一个我都不知道的字符串中找到char(A-Z)

编辑:你们告诉我的一些技巧我还没学会。对于这个问题,我应该使用:

  • for循环
  • in
也给了我一些提示:

提示1:您可能会发现中的
对于测试一个字符串是否在另一个字符串中非常有用


提示2:查看第二个参数中的每个字符,看看它是否在第一个参数中。

因此,您知道如何迭代字符串中的字符:好

你没有做的是任何可以算数的事情。您需要一组计数器来跟踪字符串中的每个字符。实现这一点的一种方法是使用
dict
、或
collections.defaultdict
、或
collections
中的另一个类

使用文档,卢克


额外提示:使用适当的数据结构和列表理解(googleit!),可以在O(m+n)时间内(易读地)在一行中完成这项工作

既然这听起来像是家庭作业,我就给你一些关于你需要做什么的建议:

  • 找出
    text1
    字符串中的字符。关键是你不会在同一个角色上重复两次。
    我可以帮你做到这一点:

    >>> set('fooled')
    set(['d', 'e', 'l', 'o', 'f'])
    
    试着和他们玩一会儿

  • 迭代
    text1
    中的(不同)字符集。您可以使用:

    这可以计算一个字符在字符串中出现的次数,您需要对所有这些值求和并返回该和

  • 注意:有很多方法可以满足你的要求,这只是其中之一(不是最好的方法)。如果您环顾四周搜索“计数字符串出现次数”或类似内容,您可以找到其他有趣的解决方案:)


    另一种方法是从
    text2
    开始:

  • text2上使用for循环进行迭代
  • 如果在text1
  • 中找到text2中的字符
    ,则将总和增加一
    
    更新:你有没有试过玩一下

    检查以下各项之间的差异:

    >>> word = 'fooled'
    >>> for c in word:
    ...     print(c)
    
    以及:

    在for循环内调用
    text2.count(c)
    应该不难


    如果仍然如此,我建议您阅读一篇好文章,稍后再回来。

    您必须将代码放入函数中,并使用函数的参数。这将帮助您了解其工作原理:

    def occurrences(text1, text2):
        """Return the number of times characters from text1 occur in text2
    
        occurrences(string, string) -> int
        """
        # loop through the string in the variable `text1`
        for c in text1: 
            print c 
            # see if its in `text2`
            if c in text2: 
                pass # you do the rest ;)
    
    # calls the function with 'fooled' -> text1 and 'hello world' -> text2
    print occurrences('fooled', 'hello world')
    

    对于python 2.7及更高版本:


    []

    让我们从这里开始,进行一些讨论:

    如您所见,需要两个字符串。我认为字符串1和字符串2就足够了,但我不知道如何定义它们

    它们是为您提供的:它们被称为
    text1
    text2
    。它们来自调用函数的代码。有没有在某个时候向您解释过函数?用你自己的话来说,函数是如何工作的?调用
    事件的代码是什么样子的

    (最后一部分提示:作业表上给出了一个示例。)

    下一步:


    你认为这意味着什么?特别是,您希望
    char
    是什么意思?(你以前学过Python以外的编程语言吗?

    这是一个好问题,因为你解释了你的问题,展示了你迄今为止所做的事情,解释了为什么/如何陷入困境,并将其标记为家庭作业。不要为学生做家庭作业。此外,这个版本是次优的。不,我以前没有学习过其他编程语言。我在高中时做过一些HTML,但它非常基本。有了这个,我试图解释:如果c属于字符串2中的一个字符。我想我把c放在那里,表示c=c在字符串中2@AnthonyDo你看过其他答案了吗?他们解释了如何做到这一点,以及如何避免穿越整个a-z范围。请,我在这里试图引导您的理解。要做到这一点,我必须首先评估你所知道的情况。为了让它发挥作用,我需要你回答问题,而不是跳到前面,重新问你所问的问题。“调用”一个函数就是如何使用它。考虑到人们期望您编写函数,如果函数还没有向您解释,那么就有一些非常错误的地方。在我们继续之前,请查阅您的参考资料,或尝试谷歌(例如,
    python中的函数是什么?
    python中的函数如何工作?
    等)或维基百科<代码>出现次数
    是您正在定义的函数(
    def
    是“define”的缩写)。要测试代码,您需要调用函数,因此您需要知道它是什么样子现在不要在意@RikPoggi的答案。一步一个脚印。@AnthonyDo:(1)有自己的,不鼓励在外面聊天。(2) 如果我的回答中有不清楚的地方,你可以在那里问。(3) 为了学习它们,你必须玩这些东西,否则它们将仍然是障碍。无论如何,我已经更新了我的答案,希望能让它更清楚。
    >>> word = 'fooled'
    >>> for c in set(word):
    ...     print(c)
    
    def occurrences(text1, text2):
        """Return the number of times characters from text1 occur in text2
    
        occurrences(string, string) -> int
        """
        # loop through the string in the variable `text1`
        for c in text1: 
            print c 
            # see if its in `text2`
            if c in text2: 
                pass # you do the rest ;)
    
    # calls the function with 'fooled' -> text1 and 'hello world' -> text2
    print occurrences('fooled', 'hello world')
    
    if c == char c in "string2":