2010-08-25 90 views
0

想要統計一個字母出現在字符串中的次數,這裏有問題。任何幫助需要基本功能幫助 - Python

def countLetters(string, character): 
    count = 0 
    for character in string: 
     if character == character: 
      count = count + 1 
    print count 
+2

沒錯,'字符== character'即將所有的時間是非常真實的。 – 2010-08-25 00:37:20

+0

避免使用標準庫名稱('string')或builtins作爲變量名稱。 – 2010-08-25 01:02:50

+0

Theres在Python 2.7集合中包含一些有用的常用計算操作方法的「Counter」對象,如「most_common(n)」。 http://docs.python.org/library/collections.html?highlight=collections#counter-objects – monkut 2010-08-25 01:14:05

回答

1

您有那些character S中相同的變量名(這意味着他們將永遠是平等的)。嘗試:

def countLetters(string, character): 
    count = 0 
    for char in string: 
     if char == character: 
      count = count + 1 
    print count 

當然,這是一樣的str.count()

+0

謝謝,這似乎是正確的,但我在空閒 >>> countLetters收到此錯誤(加利福尼亞州的一家) 回溯(最近通話最後一個): 文件 「」,1號線,在 countLetters(加州,a) NameError:name'california'沒有定義 >>> – 2010-08-25 00:38:26

+0

沒關係,愚蠢的評論。我不得不添加引號。 非常感謝 – 2010-08-25 00:39:17

3
if character == character: 

character永遠等於character,因爲他們是同一個變量。只需更改這些變量的名稱即可。也許search_character

我也不會使用string作爲變量名稱,因爲它是內置模塊的名稱。

9

其他人已經涵蓋了你的功能的錯誤。這是另一種做你想做的事情的方法。 Python的內置字符串方法count()返回字符串出現次數。

x = "Don't reinvent the wheel." 
x.count("e") 

給出:

5 
+0

+1 - Pythonic,兄弟。 – duffymo 2010-08-25 00:40:56

+0

'x = reduce(operator.add,(char =='e'for char in「Do reinvent the wheel」))''? – 2010-08-26 14:14:07

+0

'sum(char =='e'for char in「重新發明輪子的另一種方式」)== 6'。比'reduce'和'operator.add'好得多。 – 2010-11-22 04:45:35