2010-08-25 5 views
0

хочу посчитать количество раз, когда письмо появляется в строке, имея проблемы здесь. любая помощьНужна помощь с базовой функцией - Python

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

Да, символ '== character' будет очень верно все время. –

+0

Не используйте стандартные имена библиотек ('string') или встроенные имена переменных. –

+0

Theres новый объект «Counter» в наборах python 2.7, который содержит некоторые полезные методы для обычных манипуляций счетчиком, например «most_common (n)». http://docs.python.org/library/collections.html?highlight=collections#counter-objects – monkut

ответ

1

У вас есть такое же имя переменной для тех character с (что означает, что они всегда будут равны). Попробуйте:

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

Конечно, это так же, как str.count()

+0

Спасибо, это кажется правильным, но я получаю эту ошибку в IDLE >>> countLetters (калифорния, а) Traceback (самый последний вызов последнего): Файл "", строка 1, в countLetters (california, a) NameError: name 'california' не определен >>> –

+0

Не обращайте внимания, глупый комментарий. Мне пришлось добавить отметки кавычек. Большое спасибо –

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

+0

Как насчет 'x = reduce (operator.add, (char == 'e' для символа в" Do reinvent the wheel "))'? –

+0

'sum (char == 'e' для символа в« Reinvent the wheel другим способом ») == 6'. Намного приятнее, чем 'reduce' и' operator.add'. –

Смежные вопросы