tak.lol
26 январь 2025
6
0
Не нравится 0 Нравится

Число палиндром

Палиндром — это число, которое читается одинаково в обоих направлениях, символизируя симметрию и гармонию в математике.

Число палиндром

Итак, давай поговорим о числе палиндроме. Это число, которое читается одинаково слева направо и справа налево. Примеры? Легко! 121, 1331 и 12321 — все они палиндромы. Но как же нам проверить, является ли число палиндромом, используя Python? Давай разберемся с этим на практике!



Проверка числа на палиндром



Первый способ, который приходит на ум, это просто перевернуть строку и сравнить её с оригиналом. В Python это делается проще простого, благодаря срезам. Вот как это выглядит:




def is_palindrome(num):
    num_str = str(num)  # Преобразуем число в строку
    return numstr == numstr[::-1]  # Сравниваем строку с её реверсом

#Примеры использования

print(is_palindrome(121))  # True
print(is_palindrome(123))  # False
print(is_palindrome(1331))  # True


Здесь мы используем срезы. Обрати внимание на num_str[::-1] — это хитрый трюк, который позволяет нам получить строку в обратном порядке. Если оригинальная строка совпадает с перевернутой, значит, мы имеем дело с палиндромом!



Сложности и оптимизация



Но подожди! А что если число очень большое? Как насчет производительности? В таких случаях можно использовать другой подход: проверять только половину числа. Мы можем сравнивать цифры с начала и конца, двигаясь к центру. Это немного оптимизирует наш алгоритм:




def ispalindromeefficient(num):
    num_str = str(num)
    length = len(num_str)
    
    for i in range(length // 2):  # Проверяем только половину числа
        if numstr[i] != numstr[length - i - 1]:
            return False
    return True

#Примеры использования

print(ispalindromeefficient(121))  # True
print(ispalindromeefficient(123))  # False
print(ispalindromeefficient(12321))  # True


Теперь мы проходим только половину строки, что делает наш код более эффективным для больших чисел. Круто, правда?



Интересные факты о палиндромах


Знаешь ли ты, что палиндромы встречаются не только среди чисел? Есть слова-палиндромы, такие как "радар" или "шалаш". Даже фразы могут быть палиндромами, если проигнорировать пробелы и знаки препинания! Например: "А роза упала на лапу Азора". Так что, если ты когда-нибудь решишь написать программу для поиска палиндромов среди слов или фраз, ты сможешь применить тот же принцип!



Небольшая игра с палиндромами



Давай немного поразвлечемся. Как насчет того, чтобы создать функцию, которая будет находить все палиндромы в заданном диапазоне чисел? Например, от 1 до 1000. Это может быть полезно для тренировки!




def findpalindromesin_range(start, end):
    palindromes = []
    for num in range(start, end + 1):
        if is_palindrome(num):
            palindromes.append(num)
    return palindromes

#Примеры использования

print(findpalindromesin_range(1, 1000))

Эта функция создает список всех палиндромов в заданном диапазоне. Ты можешь использовать её для поиска палиндромов в любом диапазоне! Просто представь себе, сколько интересных чисел ты сможешь найти.



Заключение



Теперь ты знаешь, как работать с числами-палиндромами в Python. Ты освоил несколько способов проверки и узнал о некоторых интересных фактах. Так что вперед, используй свои новые знания и создавай удивительные вещи! И помни: даже числа могут быть симметричными!



Задания для закрепления материала


Задача 1: Найдите палиндромы в диапазоне
Напишите функцию, которая принимает два числа (начало и конец диапазона) и возвращает список всех палиндромов в этом диапазоне. Например, для диапазона от 10 до 100, результат должен быть [11, 22, 33, 44, 55, 66, 77, 88, 99].

Задача 2: Проверка на палиндром для строки
Создайте функцию, которая проверяет, является ли введенная строка палиндромом. Игнорируйте пробелы и регистр. Например, строка "А роза упала на лапу Азора" должна вернуть True.

Задача 3: Палиндромные числа в списке
Напишите функцию, которая принимает список целых чисел и возвращает новый список, содержащий только палиндромные числа из исходного списка. Например, для входного списка [121, 123, 131, 145] функция должна вернуть [121, 131].

Задача 4: Счетчик палиндромов
Создайте функцию, которая принимает число и возвращает количество палиндромов от 1 до этого числа. Например, для числа 50 функция должна вернуть 9 (палиндромы: 1, 2, 3, 4, 5, 6, 7, 8, 9).

Задача 5: Самый большой палиндром из произведения двух чисел
Напишите программу, которая находит самый большой палиндром, полученный как произведение двух трехзначных чисел. Например, найдите максимальный палиндром от произведений чисел от 100 до 999.
Комментарии к материалу
Комментировать
Ваш комментарий: