Questão 14: Crie uma função e_palindromo (n) que retorne True se n for um palíndromo (lido da mesma forma de trás para frente) e False caso contrário.
Exemplo: e_palindromo (121) → True. e_palindromo (123) → False.

Passo 1

O enunciado pede que eu crie uma função e\_palindromo(n) que retorne \text{True} se o número n for um palíndromo (lido da mesma forma da esquerda para a direita e da direita para a esquerda) e \text{False} caso contrário. Exemplos dados: e\_palindromo(121)\rightarrow \text{True} e e\_palindromo(123)\rightarrow \text{False}.
Informações relevantes fornecidas: o argumento é um número n (interpreto como um inteiro) e a saída deve ser um booleano indicando se é palíndromo ou não.

Passo 2

O que significa ser palíndromo (explicação básica): um número é palíndromo se sua sequência de dígitos for igual quando lida de trás para frente. Ex.: 121 tem dígitos "1","2","1" que lidos ao contrário continuam "1","2","1". Já 123 lido ao contrário vira "3","2","1", diferente.

Passo 3

Opções de método (breve comparação):
  • Converter n em string e comparar a string com a sua reversa. Este método é simples, direto e usa operações básicas de strings.
  • Fazer a reversão digit-a-digit com operações aritméticas (usar resto e divisão inteira) — método “numérico”. Funciona sem converter para string, mas exige manipulação de dígitos manualmente.
Vou escolher o método da string porque é o mais direto e menos sujeito a erros na hora da prova; é baseado em coisas básicas (converter para string e aplicar slicing), fáceis de escrever e entender sem calculadora.

Passo 4

Explicando passo a passo a ideia usando strings (a “aula” prática):
  1. Converter o número n para a representação em texto: isso é s = \text{str}(n). Aqui s é uma string contendo todos os caracteres do número, por exemplo, para n=121 temos s = "121".
  2. Tratar o caso de números negativos: se n for negativo, a string começa com o caractere "-", e normalmente não consideramos -121 como palíndromo (porque o sinal muda a leitura). Então, se s começa com "-", retornamos \text{False}.
  3. Reverter a string s. Em Python existe uma forma curta de fazer isso com slicing: s[::-1]. Vou explicar o slicing:
    • Em uma expressão s[a:b:c], a é o índice inicial, b é o índice final (não incluso) e c é o passo.
    • Quando usamos s[::-1], estamos pedindo para percorrer a string do fim para o início com passo -1, ou seja, geramos a string invertida.
    • Exemplo: se s = "123", então s[::-1] = "321".
  4. Comparar s com s[::-1]. Se iguais, é palíndromo; caso contrário, não é.
  5. Retornar o resultado da comparação como booleano ( \text{True} ou \text{False}).

Passo 5

Detalhando com pseudo-passo a passo que você pode escrever na prova:
  1. Recebo n.
  2. Faço s = \text{str}(n).
  3. Se s começa com "-", retorno \text{False}.
  4. Se s == s[::-1], retorno \text{True}, senão retorno \text{False}.
Comentário sobre complexidade: esse método gasta tempo proporcional ao número de dígitos (ou seja, \mathcal{O}(d), onde d é a quantidade de dígitos), e memória adicional para a string invertida também proporcional a d. Para a prova isso é suficiente e rápido.

Passo 6

Vou mostrar também, por completude, a ideia do método numérico (caso você prefira não usar strings):
  1. Se n < 0, não é palíndromo.
  2. Guardar m = n (cópia do número).
  3. Construir \text{rev} = 0. Enquanto m > 0, pegar o último dígito com d = m \bmod 10, atualizar \text{rev} = \text{rev} \times 10 + d, e reduzir m = m \mathbin{//} 10 (divisão inteira). No fim, comparar se \text{rev} == n.
    Esse método exige entender resto e divisão inteira, mas dá o mesmo resultado. É um pouco mais trabalhoso de escrever à mão, por isso na prova prefira a versão por strings se permitido.

Passo 7

Implementação final (explicada linha a linha):
  • Linha 1: definimos a função com o nome pedido e\_palindromo(n).
  • Linha 2: convertemos para string com s = \text{str}(n).
  • Linha 3: checamos se tem sinal negativo; se tiver, retornamos \text{False}.
  • Linha 4: comparamos s com s[::-1] e retornamos o resultado dessa comparação.
Também vou mostrar uns testes rápidos (você pode executar na sua cabeça ou num interpretador Python):
  • e\_palindromo(121) \text{True}.
  • e\_palindromo(123) \text{False}.
  • e\_palindromo(-121) \text{False} (decisão: sinais tornam negativo não-palíndromo).
  • e\_palindromo(7) \text{True} (um dígito é sempre palíndromo).

Resposta

def e_palindromo(n):
s = str(n)
if s.startswith(’-’):
return False
return s == s[::-1]

Exercícios relacionados