TypeError: объект 'int' не может быть подписан при обращении числа - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь выяснить, является ли число палиндромом. Мой код:

max = 10 ** n
length = 0
total = 0
for i in range (max):
    if i == i[::-1]:
        total += 1
        if len(i) == n:
            length += 1

Строка if i == i[::-1]: выдает ошибку TypeError: 'int' object is not subscriptable. n является целым числом.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы должны преобразовать i в строку, прежде чем пытаться обратить ее как последовательность. В противном случае целые числа нельзя использовать как последовательность.

max = 10 ** n
length = 0
total = 0
for i in range (max):
    s = str(i)
    if s == s[::-1]:
        total += 1
        if len(s) == n:
            length += 1
0 голосов
/ 05 июля 2018

Переменная i является целым числом, но вы пытаетесь получить доступ к элементу из него, как если бы это был список, через

if i == i[::-1]:

Я думаю, что в этом случае вы хотите

if str(i) == str(i)[::-1]:

И также приведение i к строке внутри if len(str(i)) == n:

Однако вместо этого может быть проще:

for i in map(str,range(max)):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...