Invertir número entero (sin cadena) usando Python
En este post de programación en Python te mostraré cómo invertir un número entero (por ejemplo, convertir 123 a 321) pero sin usar funciones de cadena ni convertir a cadena.
Básicamente vamos a hacer todo esto con matemáticas, trabajando a los números como lo que son, y no como cadenas.
Si bien este enfoque sirve para practicar, yo preferiría convertirlo a cadena, invertirlo y luego convertirlo de nuevo a entero.
Te repito: yo preferiría convertir a cadena e invertir, pero si quieres saber cómo hacerlo con números quedaría de la siguiente manera:
"""
https://parzibyte.me/blog
"""
def invertir_numero(n):
numero = 0
while n != 0:
numero = 10*numero+n % 10
n //= 10
return numero
La función recibe un número y regresa al mismo invertido. Si te preguntas por el //=
es como hacer el /=
(dividir y asignar) pero con el doble /
redondeamos la división hacia abajo.
Básicamente la línea 8 podría quedar así: n = n // 10
El código completo y el modo de uso queda así:
"""
https://parzibyte.me/blog
"""
def invertir_numero(n):
numero = 0
while n != 0:
numero = 10*numero+n % 10
n //= 10
return numero
# Modo de uso
numero = 2811
numero_invertido = invertir_numero(numero)
print(f"El número {numero} es {numero_invertido} al invertirse")
Al ejecutarlo, el resultado es correcto. Recuerda que solo funciona con enteros. Para hacerlo funcionar con flotantes puede ser útil la función modf que separa parte entera y decimal.
Puedes aprender más sobre Python en mi blog.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.