让str.count()在python上工作

时间:2014-01-20 04:21:34

标签: python

我对编程很新。我一直在努力让string.count函数起作用。 这就是我到目前为止所做的:

def trial ():
    a = raw_input ("Enter a string:").lower() 
    print a
    b = raw_input ("Enter a substring:").lower()
    print b

    print "The total character count is:" + a.count('b')

它还没有给我计数。它一直给我<built-in method count of str object at 0x0181B500>。 我想我做错了什么。我意识到这可能是一个简单的问题,但我是初学者。我读过你必须使用str.count(sub [,start [,end]])但是start和end是什么意思?我读了描述,但我没有真正理解。

任何形式的帮助将不胜感激!

6 个答案:

答案 0 :(得分:2)

您尚未保存代码或使用print a.count而非print a.count()。前者意味着您在字符串对象中打印count方法的表示,因此打印输出:

<built-in method count of str object at 0x0181B500>

至于sub,start,end的含义,我可以推荐the Python documentation for string objects?

string.count(s, sub[, start[, end]]) 
     

返回字符串s [start:end]中substring sub出现的次数(非重叠)。开始和结束的默认值以及负值的解释与切片相同。

实质上,这意味着:

"Some long text right about here".count("o",5,9)

仅计算子字符串o中与"Some long text right about here"[5:9]等效的"long"的数量,因此将返回1

答案 1 :(得分:2)

您是否正在尝试打印b a'b'次?通过b,您将获得字符串中b字母的出现次数,而不是def trial (): a = raw_input ("Enter a string:").lower() print a b = raw_input ("Enter a substring:").lower() print b print "The total character count is:" + str(a.count(b)) 变量的内容。此外,您正在尝试连接字符串和int。请进行以下调整。

{{1}}

答案 2 :(得分:1)

您收到的消息来自运行a.countb.count。如果不在对象方法中包含parens,则直接访问方法对象,如消息中所示。

您的算法不正确。 a.count('b')将返回a中字符“b”的总出现次数。您的打印消息显示它显示“总字符数”。为此,您将使用len()功能。要获得a中的字符总数,您将运行len(a),而b则会运行len(b)。如果您尝试获取len(a) + len(b)len(a + b)的总数,如果您尝试在b中获取a的总出现次数,那么你会运行a.count(b)

答案 3 :(得分:1)

在这里,我们无法理解您的问题,您不希望计算任何字符或计算单个字符的出现次数。 下面的代码计数没有涉及的字符。

from collections import Counter
 str = "Mary had a little lamb"
 counter = Counter(str)
 print Counter[str]

仅限代码字符

str= raw_input("Enter anything:")
str = "this is string example....wow!!!";
sub = "i";
print "str.count(sub) : ", str.count(sub)

答案 4 :(得分:1)

出于测试目的,将逻辑与I / O分开是很好的做法

例如:

def trial(a, b):
    return "The total character count is:" + a.count('b')

现在你可以像这样快速测试

>>> trial("foo bar", "oo")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in trial
TypeError: cannot concatenate 'str' and 'int' objects

哦,对,首选的方法是使用.format()

def trial(a, b):
    return "The total character count is: {}".format(a.count('b'))

现在你可以再试一次

>>> trial("foo bar", "oo")
'The total character count is: 1'

您的问题中的代码未生成原始错误。你可能有这样的东西

def trial ():
    a = raw_input ("Enter a string:").lower() 
    print a
    b = raw_input ("Enter a substring:").lower()
    print b

    print "The total character count is:", a.count

答案 5 :(得分:0)

我使用python 3.3.1回答了这个问题。

根据你的例子

def trial () :
    a = input ("Enter a string:").lower()
    #takes your input in lower case and assign to variable a 
    print (a)
    #print above input (content of a)
    b = input ("Enter a substring:").lower()
    #takes your input in lower case and assign to variable b
    print (b)
    #print above input (content of b)

    print ("The total character count is:", a.count(b))
    #this will give you how many times content of 'b' repeat in content of 'a'.

trial()

str.count(sub,start,end) - &gt; 你的例子'str'等于'a'。 'sub'等于'b'。开始和结束没有给出。因此默认开始是'a'的索引0,默认结束是'a'的最后一个索引。假设你的a ='beautiful_mind_sing'和b ='i'。如果你给a.count(b,1,13)。即使有三个'我的答案也是2因为这里的开始和结束索引是1和13.因此a.count()只搜索索引1到13。这里介于'e'和'd'之间 - &gt; 'B * E * autiful_min * d * _sing'。

附加示例:

first_line='Hello Sandu how are you? Hello Anu how are you? Hello Sa how are you?'
searching_word='are'

print("Number of searching_word 'are' repeate in the first_line is: ", first_line.count(searching_word,3,50))

答案:

  
    
      

first_line中的searching_word'重复次数为:2

    
  

参考:http://www.tutorialspoint.com/python/string_count.htm