martes, 14 de julio de 2026

Determinar si un número natural es capicúa en Python

Código del ejercicio: Con ciclo while

x = int(input("Ingresar número natural: "))
auxiliar = x
capicua = 0
while x > 0:
  ultimo = x % 10
  capicua = (capicua * 10) + ultimo
  x = x // 10
if capicua == auxiliar:
  print("Es capicúa")
else:
  print("No es capicúa")

Definición de los códigos del ejercicio:

int() --> convierte el valor especificado en un número entero.
input() --> permite obtener texto escrito por teclado.
while --> el bucle while evalúa una condición y luego ejecuta un bloque de código si la condición es verdadera.
for --> el bucle for se utiliza para recorrer los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, …) y ejecutar un bloque de código.
in --> el operador in devuelve True si el valor se encuentra en una secuencia; False en caso contrario.
range --> es un tipo que se utiliza para representar una secuencia inmutable de números. Uno de sus principales usos es junto a la sentencia for, para definir un bucle sobre el que se itera un número determinado de veces.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
> --> el operador mayor que ( > ) devuelve true si el operando izquierdo es mayor que el operando derecho.
% --> el operador de modulo ( % ) devuelve el resto de la división.
// --> también conocido como operador de división de piso, es un operador de división que proporciona un número entero como salida y descarta el resto.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
lista = [1,2,3,4] --> son variables que almacenan arrays, internamente cada posición puede ser un tipo de datos distinto.
len() --> devuelve el número de elementos de un objeto.
append() --> agrega un elemento al final de la lista.
join() --> toma todos los elementos en un iterable y los une en una sola cadena.
[::-1] --> invierte una lista o cadena.
print() --> imprime un mensaje en la pantalla.

Explicación del Código:

Este programa solicita un número natural al usuario y verifica si es capicúa. Un número es capicúa cuando se lee igual de izquierda a derecha que de derecha a izquierda, por ejemplo: 121, 1331 o 4554. El programa invierte el número y luego lo compara con el original.

Código Explicación sencilla
x = int(input("Ingresar número natural: ")) Solicita al usuario que ingrese un número natural y lo convierte en un número entero.
auxiliar = x Guarda una copia del número original para compararlo más adelante, ya que la variable x cambiará durante el proceso.
capicua = 0 Inicializa una variable donde se irá formando el número invertido.
while x > 0: Repite el proceso mientras el número tenga dígitos por recorrer.
ultimo = x % 10 Obtiene el último dígito del número utilizando el operador módulo (%).
capicua = (capicua * 10) + ultimo Va construyendo el número invertido. Primero desplaza los dígitos una posición multiplicando por 10 y luego agrega el último dígito obtenido.
x = x // 10 Elimina el último dígito del número usando división entera para continuar con el siguiente.
if capicua == auxiliar: Compara el número invertido con el número original.
print("Es capicúa") Se ejecuta si ambos números son iguales, indicando que el número es capicúa.
else: Se ejecuta cuando el número invertido es diferente del número original.
print("No es capicúa") Muestra el mensaje indicando que el número no es capicúa.

Código del ejercicio: Con ciclo for

x = input("Ingresar número natural: ")
lista = []
for digito in range(len(x)-1, -1, -1):
  lista.append(x[digito])
capicua = "".join(lista)
if x == capicua:
  print("Es capicúa")
else:
  print("No es capicúa")

Definición de los códigos del ejercicio:

int() --> convierte el valor especificado en un número entero.
input() --> permite obtener texto escrito por teclado.
while --> el bucle while evalúa una condición y luego ejecuta un bloque de código si la condición es verdadera.
for --> el bucle for se utiliza para recorrer los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, …) y ejecutar un bloque de código.
in --> el operador in devuelve True si el valor se encuentra en una secuencia; False en caso contrario.
range --> es un tipo que se utiliza para representar una secuencia inmutable de números. Uno de sus principales usos es junto a la sentencia for, para definir un bucle sobre el que se itera un número determinado de veces.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
> --> el operador mayor que ( > ) devuelve true si el operando izquierdo es mayor que el operando derecho.
% --> el operador de modulo ( % ) devuelve el resto de la división.
// --> también conocido como operador de división de piso, es un operador de división que proporciona un número entero como salida y descarta el resto.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
lista = [1,2,3,4] --> son variables que almacenan arrays, internamente cada posición puede ser un tipo de datos distinto.
len() --> devuelve el número de elementos de un objeto.
append() --> agrega un elemento al final de la lista.
join() --> toma todos los elementos en un iterable y los une en una sola cadena.
[::-1] --> invierte una lista o cadena.
print() --> imprime un mensaje en la pantalla.

Explicación del Código:

1. Solicitar el número

x = input("Ingresar número natural: ")

Se pide al usuario que ingrese un número natural. Se guarda como una cadena de texto para poder recorrer cada uno de sus dígitos fácilmente.

2. Crear una lista vacía

lista = []

Se crea una lista vacía donde se almacenarán los dígitos del número en orden inverso.

3. Recorrer el número desde el último dígito hasta el primero

for digito in range(len(x)-1, -1, -1):

El ciclo for comienza desde la última posición del número y avanza hacia la primera, recorriendo los dígitos al revés.

4. Guardar cada dígito invertido

lista.append(x[digito])

Cada dígito recorrido se agrega a la lista, formando poco a poco el número invertido.

5. Unir los dígitos invertidos

capicua = "".join(lista)

La función join() une todos los elementos de la lista para formar una sola cadena con el número invertido.

6. Comparar el número original con el invertido

if x == capicua:

Se verifica si el número original es igual al número invertido. Si ambos son iguales, significa que el número es capicúa.

7. Mostrar el resultado

print("Es capicúa") else: print("No es capicúa")

Si el número es igual a su versión invertida, se muestra el mensaje "Es capicúa". En caso contrario, se muestra "No es capicúa".

Código del ejercicio: Otra forma de hacer

x = input("Ingresar número natural: ")
if x == x[::-1]:
  print("Es capicúa")
else:
  print("No es capicúa")

Definición de los códigos del ejercicio:

int() --> convierte el valor especificado en un número entero.
input() --> permite obtener texto escrito por teclado.
while --> el bucle while evalúa una condición y luego ejecuta un bloque de código si la condición es verdadera.
for --> el bucle for se utiliza para recorrer los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, …) y ejecutar un bloque de código.
in --> el operador in devuelve True si el valor se encuentra en una secuencia; False en caso contrario.
range --> es un tipo que se utiliza para representar una secuencia inmutable de números. Uno de sus principales usos es junto a la sentencia for, para definir un bucle sobre el que se itera un número determinado de veces.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
> --> el operador mayor que ( > ) devuelve true si el operando izquierdo es mayor que el operando derecho.
% --> el operador de modulo ( % ) devuelve el resto de la división.
// --> también conocido como operador de división de piso, es un operador de división que proporciona un número entero como salida y descarta el resto.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
lista = [1,2,3,4] --> son variables que almacenan arrays, internamente cada posición puede ser un tipo de datos distinto.
len() --> devuelve el número de elementos de un objeto.
append() --> agrega un elemento al final de la lista.
join() --> toma todos los elementos en un iterable y los une en una sola cadena.
[::-1] --> invierte una lista o cadena.
print() --> imprime un mensaje en la pantalla.

Explicación del Código:

Código

x = input("Ingresar número natural: ")
if x == x[::-1]:
    print("Es capicúa")
else:
    print("No es capicúa")

Explicación paso a paso

Código Explicación sencilla
x = input("Ingresar número natural: ") Solicita al usuario que ingrese un número natural y lo guarda como una cadena de texto en la variable x.
if x == x[::-1]: Compara el número con su versión invertida. La expresión x[::-1] devuelve el texto al revés. Si ambos son iguales, significa que el número se lee igual de izquierda a derecha que de derecha a izquierda.
print("Es capicúa") Se ejecuta cuando el número y su versión invertida son iguales. Muestra el mensaje "Es capicúa".
else: Se ejecuta cuando la condición anterior no se cumple, es decir, cuando el número no es igual al invertido.
print("No es capicúa") Muestra el mensaje "No es capicúa", indicando que el número no se lee igual en ambos sentidos.
Resumen:

Este programa pide un número al usuario y lo guarda como texto. Luego utiliza x[::-1] para invertir el número y compara ambas cadenas. Si son iguales, el número es capicúa; de lo contrario, indica que no lo es. Es una solución muy corta y eficiente porque aprovecha el manejo de cadenas de Python.

Código del ejercicio: Otra forma de hacer

numero = int(input("Ingrese un número: "))
digito = 0
invertir = 0
aux = numero
while numero > 0:
    digito = numero % 10
    invertir = (invertir * 10) + digito
    numero = (numero - digito) / 10
if invertir == aux:
    print("Es capicúa")
else:
    print("No es capicúa")

Definición de los códigos del ejercicio:

int() --> convierte el valor especificado en un número entero.
input() --> permite obtener texto escrito por teclado.
while --> el bucle while evalúa una condición y luego ejecuta un bloque de código si la condición es verdadera.
for --> el bucle for se utiliza para recorrer los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, …) y ejecutar un bloque de código.
in --> el operador in devuelve True si el valor se encuentra en una secuencia; False en caso contrario.
range --> es un tipo que se utiliza para representar una secuencia inmutable de números. Uno de sus principales usos es junto a la sentencia for, para definir un bucle sobre el que se itera un número determinado de veces.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
> --> el operador mayor que ( > ) devuelve true si el operando izquierdo es mayor que el operando derecho.
% --> el operador de modulo ( % ) devuelve el resto de la división.
// --> también conocido como operador de división de piso, es un operador de división que proporciona un número entero como salida y descarta el resto.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
lista = [1,2,3,4] --> son variables que almacenan arrays, internamente cada posición puede ser un tipo de datos distinto.
len() --> devuelve el número de elementos de un objeto.
append() --> agrega un elemento al final de la lista.
join() --> toma todos los elementos en un iterable y los une en una sola cadena.
[::-1] --> invierte una lista o cadena.
print() --> imprime un mensaje en la pantalla.

Explicación del Código:

Código

numero = int(input("Ingrese un número: "))
digito = 0
invertir = 0
aux = numero

while numero > 0:
    digito = numero % 10
    invertir = (invertir * 10) + digito
    numero = (numero - digito) / 10

if invertir == aux:
    print("Es capicúa")
else:
    print("No es capicúa")

Explicación del código

Código Explicación
numero = int(input("Ingrese un número: ")) Solicita al usuario que ingrese un número entero y lo guarda en la variable numero.
digito = 0 Inicializa la variable donde se almacenará el último dígito del número en cada repetición.
invertir = 0 Inicializa la variable que almacenará el número invertido.
aux = numero Guarda una copia del número original para compararlo al final.
while numero > 0: Repite el proceso mientras el número sea mayor que cero.
digito = numero % 10 Obtiene el último dígito del número usando el operador módulo (%).
invertir = (invertir * 10) + digito Construye el número invertido agregando el último dígito obtenido.
numero = (numero - digito) / 10 Elimina el último dígito del número para continuar con el siguiente. En versiones actuales de Python es más recomendable usar numero = numero // 10 para mantener el valor como entero.
if invertir == aux: Compara el número invertido con el número original.
print("Es capicúa") Se ejecuta si ambos números son iguales, indicando que el número es capicúa.
else: Se ejecuta cuando el número invertido es diferente al original.
print("No es capicúa") Muestra que el número no es capicúa.

Resumen

El programa solicita un número, invierte sus dígitos utilizando un ciclo while y luego compara el número invertido con el original. Si ambos son iguales, significa que el número se lee igual de izquierda a derecha y de derecha a izquierda, por lo que es un número capicúa; de lo contrario, informa que no lo es.

No hay comentarios.:

Publicar un comentario

Calcular la potencia de un número entero en Python

Código del ejercicio: x = int ( input ( "Ingresar un número entero: " )) y = int ( input ( "Ingresar N: " )...

Copyright © Ejercicios de programación. Todos los derechos reservados. ❤️