2015-06-21 6 views
2

Как написать программу, которая печатает количество раз, когда определенная строка отображается в данном слове. Например: если я ищу для строки «папа» в слове «asdadgfrdad» выход должен быть 2.Подсчитайте количество раз, когда определенная строка появляется в заданном слове

def numStrings(a): 
    strings = 'dad' 
    result = 0 
    for char in a: 
     if char in strings: 
      result = result + 1 
    print result 

numStrings("asdadgfrdad") 

Но это дает мне несколько раз буквы D, A присутствуют в данное слово. Как исправить это?

+2

Строки имеет встроенный метод для этого: https://docs.python.org/ 2/library/stdtypes.html # str.count – BrenBarn

+0

'a.count (строки)' – alexis

+0

Намерение важно в Python. –

ответ

5

Короткий и простой вещий способ сделать это было бы

'asdadgfrdad'.count('dad') 

Однако, ваш ответ может или не может быть то, что вы ожидаете, когда вы смотрите на что-то вроде 'dadad'.count('dad') который возвращает 1 вместо 2. Это потому что str.count возвращает число неперекрывающихся вхождений подстроки. С другой стороны, если вы хотите, чтобы найти число перекрывающихся подстроки, вы должны использовать следующий код:

haystack = 'dadad' 
needle = 'dad' 
sum(haystack[i:i+len(needle)] == needle for i in range(len(haystack))) 
+0

Можете ли вы рассказать мне, где использовать последний код? Я попытался включить его в свой код, но я не получаю желаемый результат. – coder123

+1

Вам нужно будет использовать последнюю строку в качестве выражения, например 'num_repeats = sum (haystack [i: i + len (needle)] == Игла для i в диапазоне (len (haystack))), а затем используйте 'num_repeats', как вам хотелось бы. (например, 'print'ing и т. д.), –

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