2010-08-25 3 views
0

voulez compter le nombre de fois qu'une lettre apparaît dans une chaîne, ayant des problèmes ici. Toute aideBesoin d'aide avec la fonction de base - Python

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

Eh oui, caractère '== character' va être très vrai tout le temps. –

+0

Évitez d'utiliser des noms de bibliothèques standard ('string') ou des noms d'architecture intégrés comme noms de variables. –

+0

Theres un nouvel objet "Counter" dans python 2.7 collections qui contient quelques méthodes utiles pour les manipulations de comptage commun, comme "most_common (n)". http://docs.python.org/library/collections.html?highlight=collections#counter-objects – monkut

Répondre

1

Vous avez le même nom de variable pour les character s (ce qui signifie qu'ils seront toujours égaux). Essayez:

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

Bien sûr, cela est la même chose que str.count()

+0

Merci, cela semble correct, mais j'obtiens cette erreur dans IDLE >>> countLetters (Californie, a) retraçage (le plus récent appel dernier): Fichier "", ligne 1, dans countLetters (californie, a) NameError: le nom 'california' n'est pas défini >>> –

+0

peu importe, commentaire stupide. Je devais ajouter les guillemets. Merci beaucoup –

3
if character == character: 

character toujours égal à character parce qu'ils sont la même variable. Changez juste les noms de ces variables. Peut-être search_character?

Je n'utiliserais pas non plus string comme nom de variable car c'est le nom d'un module intégré.

9

Les autres ont couvert les erreurs de votre fonction. Voici une autre façon de faire ce que vous voulez. La méthode de chaîne intégrée de Python count() renvoie le nombre d'occurrences d'une chaîne.

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

donne:

5 
+0

+1 - Pythonic, mec. – duffymo

+0

Qu'en est-il de 'x = reduce (operator.add, (char == 'e' pour char dans" Do reinvent the wheel ")))? –

+0

'sum (char == 'e' pour char dans" Réinventer la roue autrement ") == 6'. Beaucoup plus agréable que 'reduce' et' operator.add'. –

Questions connexes