пустой список в функции def (индекс списка вне допустимого диапазона) - PullRequest
0 голосов
/ 11 июля 2020

Я не понимаю, почему мой список не используется в функции def. Я предполагаю, что он пуст из-за вывода, но почему?

def check_palind(x):
    palind = []
    actual_palind = []
    palind = [int(i) for i in str(x)] 
    while palind[0] == palind[-1] and len(palind) % 2 == 0:
        print(palind,'is still a palindrome')
        print('removing',palind.pop(0))
        print('removing',palind.pop(-1))
        actual_palind.append(x)
        actual_palind = set(actual_palind)
        actual_palind = list(actual_palind)
    else:
        actual_palind = []

    return actual_palind
check_palind(900009)

выходы:

while palind[0] == palind[-1] and len(palind) % 2 == 0:

IndexError: list index out of range

1 Ответ

0 голосов
/ 11 июля 2020
In [19]: def check_palind(x):
    ...:     palind = []
    ...:     actual_palind = []
    ...:     palind = [int(i) for i in str(x)]
    ...:     while palind and palind[0] == palind[-1] and len(palind) % 2 == 0:
    ...:         print(palind,'is still a palindrome')
    ...:         print('removing',palind.pop(0))
    ...:         print('removing',palind.pop(-1))
    ...:         actual_palind.append(x)
    ...:         actual_palind = set(actual_palind)
    ...:         actual_palind = list(actual_palind)
    ...:     else:
    ...:         actual_palind = []
    ...:
    ...:     return actual_palind
    ...:

In [20]: check_palind(900009)
[9, 0, 0, 0, 0, 9] is still a palindrome
removing 9
removing 9
[0, 0, 0, 0] is still a palindrome
removing 0
removing 0
[0, 0] is still a palindrome
removing 0
removing 0
Out[20]: []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...