Python 在循环中处理字符串
我正在尝试编写一个函数,它接受两个字符串参数,并返回第一个字符串中的字符在第二个字符串中出现的次数 我是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
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
对于测试一个字符串是否在另一个字符串中非常有用
提示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":