我正在尝试编写一个带有两个字符串参数的函数,并返回第一个字符串中的字符出现在第二个字符串中的次数。
我是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),我甚至都不知道?
编辑:你们告诉我的一些提示我还没有学到。对于这个问题,我应该使用:in
还给了我一些提示:
提示1:如果一个字符串在另一个字符串中,您可能会发现in
对测试非常有用。
提示2:查看第二个参数中的每个字符,看它是否在第一个参数中。
答案 0 :(得分:4)
让我们从这里开始并进行一些讨论:
如您所见,需要2个字符串。我认为字符串1和字符串2就足够了,但我不知道如何定义它们。
它们是为您提供的:它们被称为text1
和text2
。它们来自调用函数的代码。在某些时候向你解释了功能吗?用你自己的话说,一个函数是如何工作的?调用occurrences
?
(最后一部分提示:你的作业单上有一个例子。)
下一步:
if c == char c in "string2":
您期望这意味着什么?特别是,您期望char
的意思是什么? (你以前学习过Python以外的编程语言吗?)
答案 1 :(得分:1)
因为这听起来像是家庭作业,所以我只想给你一些关于你需要做什么的指示:
找出text1
字符串中的哪些字符。关键是你不会两次同一个charachter
set()
可以为您提供帮助:
>>> set('fooled')
set(['d', 'e', 'l', 'o', 'f'])
尝试与他们一起玩。
从text1
迭代一组(不同的)字符集。您可以使用.count()
:
>>> 'hello world'.count('e')
1
>>> 'hello world'.count('o')
2
这可以计算字符串中charachter发生的次数,你需要将所有这些值相加并返回该值。
注意:有很多方法可以做你要问的事情,这只是其中之一(而不是最好的表现)。如果你环顾四周寻找“计数字符串出现”或类似的东西,你可以找到其他有趣的解决方案:)
另一种方法可能是从text2
开始:
text2
in text1
,则增加一个总和。更新:您是否尝试过使用它们?
检查以下区别:
>>> 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)
所以,你知道如何迭代字符串中的字符:好。
你没有做的是任何可以算数的东西。您需要一组计数器来跟踪字符串中的每个字符。实现这一目标的一种方法是使用dict
或collections.defaultdict
,或collections
中找到的其他类。
使用docs,Luke。
额外提示:可以在O(m + n)时间内(可读)使用适当的数据结构和列表理解(google it!)在单行中执行此操作(可读)。
答案 4 :(得分:-1)
for python 2.7及更高版本: