"Нет" включено в вывод программы ... почему? - PullRequest
0 голосов
/ 19 января 2011

Я искал на форуме и нашел похожие вопросы, но мне не повезло в решении моей проблемы.

Мой код предназначен для замены каждых двух букв каждого слова с помощью рекурсии и вывода результата. Для слов с четным количеством букв слово «None» включено в вывод, и я не знаю, как это исправить ...

вот код:

def encryptLine(line, count):
    headline = line[count:]

    if length(headline) > 0:
        if count == length(line) - 1:
            new = headline
            return new
        elif count <= length(line):
            new = head(tail(headline)) + head(headline)
        new = new + str(encryptLine(line, count+2))
        return new

print(encryptLine('abcd', 0))

выводом для 'abcd' является badcNone, что является правильным, за исключением слова None. выводом для 'abcde' является 'badce', что правильно ...

Заранее спасибо за помощь!

Ответы [ 2 ]

8 голосов
/ 19 января 2011

Добавьте return "" к определению функции, то есть

def encryptLine(line, count):
    headline = line[count:]

    if length(headline) > 0:
        if count == length(line) - 1:
            new = headline
            return new
        elif count <= length(line):
            new = head(tail(headline)) + head(headline)
        new = new + str(encryptLine(line, count+2))
        return new
    return ""

В противном случае функция вернет None, если length(headline) > 0 не удерживается.

2 голосов
/ 19 января 2011

Нет здесь, потому что ваша функция ничего не возвращает.Есть 1 случай, когда вы ничего не возвращаете, это

if length(headline) <= 0:

В Python, если нет возврата к функции и вы пытаетесь получить доступ к возвращаемому значению, значениени один.

...