Я застрял с ошибкой выхода из списка в python - PullRequest
3 голосов
/ 18 апреля 2020

Я начинающий python программист, и я начал выполнять упражнения в кодах, и я получил следующее задание:

Завершите решение, чтобы разбить строку на пары из двух символов. Если строка содержит нечетное количество символов, тогда ей следует заменить отсутствующий второй символ последней пары подчеркиванием ('_').

решение ('ab c') # должно вернуть [' ab ',' c_ '] решение (' abcdef ') # должно вернуть [' ab ',' cd ',' ef ']

теперь я написал следующий код, который дает мне правильный результат:

def solution(s):
    l = [s[i:i+2] for i in range(0,len(s) ,2)]
    if len(l[-1]) == 1:
        l[-1] += "_"
    return l

print(solution('abc')) -> ['ab', 'c_']
print(solution('asdfadsf')) -> ['as', 'df', 'ad', 'sf']

, но когда я отправляю свой код в войны кодов, я получаю следующую ошибку:

if len(l[-1]) == 1: IndexError: list index out of range

ошибка, которую я не получаю, если тестирую в коде Visual Studio.

Может кто-нибудь объяснить мне, как я могу это исправить? Спасибо !! :)

1 Ответ

2 голосов
/ 18 апреля 2020

Проблема l[-1] для входа ''. В этом случае ваше понимание списка возвращает пустой список [], в котором нет элемента l[-1].

Проверка ввода пустой строки отдельно:

def solution(s): 
    if not s: 
        return []

    l = [s[i:i+2] for i in range(0,len(s) ,2)]
    if len(l[-1]) == 1:
        l[-1] += "_"
    return l

print(solution('abc')) # -> ['ab', 'c_']
print(solution('asdfadsf')) # -> ['as', 'df', 'ad', 'sf']

print(solution('')) # -> [] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...