在循环中处理字符串

时间:2012-03-18 11:07:25

标签: python string methods

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

我是python的初学者,我很难过。如果有人能指出我正确的方向,这将是伟大的。我从一开始就给予了这个:

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

    occurrences(string, string) -> int
    """
    #Your code goes here

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

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

for c in "string":
    print c
    if c == char c in "string2":
        count += 1

我只是投入随机变量,因为我怎么想在字符串中找到char(A-Z),我甚至都不知道?

编辑:你们告诉我的一些提示我还没有学到。对于这个问题,我应该使用:

  • for loop
  • in

还给了我一些提示:

提示1:如果一个字符串在另一个字符串中,您可能会发现in对测试非常有用。

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

5 个答案:

答案 0 :(得分:4)

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

  

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

它们是为您提供的:它们被称为text1text2。它们来自调用函数的代码。在某些时候向你解释了功能吗?用你自己的话说,一个函数是如何工作的?调用occurrences

的代码是什么样的?

(最后一部分提示:你的作业单上有一个例子。)

下一步:

if c == char c in "string2":

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

答案 1 :(得分:1)

因为这听起来像是家庭作业,所以我只想给你一些关于你需要做什么的指示:

  1. 找出text1字符串中的哪些字符。关键是你不会两次同一个charachter set()可以为您提供帮助:

    >>> set('fooled')
    set(['d', 'e', 'l', 'o', 'f'])
    

    尝试与他们一起玩。

  2. text1迭代一组(不同的)字符集。您可以使用.count()

    >>> 'hello world'.count('e')
    1
    >>> 'hello world'.count('o')
    2
    

    这可以计算字符串中charachter发生的次数,你需要将所有这些值相加并返回该值。

  3. 注意:有很多方法可以做你要问的事情,这只是其中之一(而不是最好的表现)。如果你环顾四周寻找“计数字符串出现”或类似的东西,你可以找到其他有趣的解决方案:)


    另一种方法可能是从text2开始:

    1. 使用text2
    2. 上的for循环进行迭代
    3. 如果找到来自text2的字符in text1,则增加一个总和。

    4. 更新:您是否尝试过使用它们?

      检查以下区别:

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

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

      在for-loop text2.count(c)中调用它应该不难。

      如果这仍然是"doens't make much sense",那么我建议您阅读好Python Tutorial并稍后再回来。

答案 2 :(得分:1)

您必须将代码放在函数中并使用函数具有的参数。这应该可以帮助您弄清楚它是如何工作的:

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')

答案 3 :(得分:0)

所以,你知道如何迭代字符串中的字符:好。

你没有做的是任何可以算数的东西。您需要一组计数器来跟踪字符串中的每个字符。实现这一目标的一种方法是使用dictcollections.defaultdict,或collections中找到的其他类。

使用docs,Luke。

额外提示:可以在O(m + n)时间内(可读)使用适当的数据结构和列表理解(google it!)在单行中执行此操作(可读)。

答案 4 :(得分:-1)

for python 2.7及更高版本:

[Solution in previous version of question]