Top.Mail.Ru
Ответы

Программирование python. Помогите написать программу

Нужно написать программу используя списочное выражение, чтобы вывести все числа палиндромов от 100 до 1000.
(Достаточно проверить на условие равенства первого и последнего числа в трёхзначных числах)
Я так понимаю чтобы выявить число палиндром нужно условие i[0] == i[-1]
Написал код, но он не работает:
s = [i for i in range(100, 1001) if i[0] == i[-1]]

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

По дате
По Рейтингу
Аватар пользователя
Искусственный Интеллект

Если уж делать так, как тебе пришло в голову, то

s = [i for i in range(100, 1000) if list(str(i))[0] == list(str(i))[-1]]
print (s)

Аватар пользователя
Мудрец

s = [i for i in range(100, 1001) if str(i) == str(i)[::-1]] # переворачивает число и сравнивает его с исходным

или

s = [i for i in range(100, 1001) if str(i)[0] == str(i)[-1]] # сравнивает первую и последнюю цифра, если одна и та же цифра, значит палиндром

Вы извлекаете 0 индекс из числа. Зачем?
Переворот делается так [::-1]. И чтобы такое осуществить с числом, его нужно перевести в строку. Но вот зачем вы извлекали из числа 0 индекс мне непонятно...

Аватар пользователя
Ученик
3мес

palindromes = [i for i in range(100, 1001) if i % 10 == i // 100]
print(palindromes)