Заявление о возврате Python, частая проблема - PullRequest
0 голосов
/ 18 мая 2018

Следующая программа находит слова типа code / cope / coje и т. Д. И возвращает количество совпадений.Однако моя функция возврата не дает мне вывод.print(len(matches)) дает правильный вывод, но мне нужно использовать return.Я вижу в этом вопросе , что 'findall' - более простой метод, но сейчас я хочу использовать finditer.Почему это выражение возврата не правильно?Я часто сталкиваюсь с этой проблемой, когда пишу программы для изучения Python.Мне не удалось выбрать ответ из этих ссылок один , два

import re
mystr = "codexxxcmkkaicopemkmaskdmcone"

def count_code (char):
  pattern = re.compile (r'co\we')
  matches = pattern.finditer(char)
  result = tuple (matches)
  return len(result)

count_code(mystr)

count_code (mystr) не вернул ничего и не вернул ошибку.Смотрите здесь: repl.it

1 Ответ

0 голосов
/ 18 мая 2018

Ваша функция работает нормально.Вот что я получаю, когда запускаю его в локальном репле:

>>> import re
>>> mystr = "codexxxcmkkaicopemkmaskdmcone"
>>>
>>> def count_code (char):
...   pattern = re.compile (r'co\we')
...   matches = pattern.finditer(char)
...   result = tuple (matches)
...   return len(result)
...
>>> count_code(mystr)
3

Он ничего не выводит в repl.it, потому что вы ничего не отправляете на вывод.Замените эту последнюю строку на print count_code(mystr) и посмотрите результаты:

Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.8.2] on linux
>   
3
>   

А вот мой repl.it .

import re
mystr = "codexxxcmkkaicopemkmaskdmcone"

def count_code (mystr):

    pattern = re.compile (r'co\we')

    matches = pattern.finditer(mystr)
    matches = tuple (matches)

    return len(matches)


print count_code(mystr)
...