Skip to content

Instantly share code, notes, and snippets.

@ALEX7320
Last active November 11, 2023 21:32
Show Gist options
  • Save ALEX7320/2c2306efdc77bd8c69f3fe078e1d27d9 to your computer and use it in GitHub Desktop.
Save ALEX7320/2c2306efdc77bd8c69f3fe078e1d27d9 to your computer and use it in GitHub Desktop.
Invertir cualquier número (entero,negativo,decimal) [Python 3]
#Iniciamos en un while para que puedas
#ejecutarlo sin limites (opcional)
while True:
'''
el "switch" nos ayudara a identifica
si el numero es negativo
negativo = True
no negativo = False
por defecto es "false" debido a que
no hay un ingreso
'''
sw_negativo=False
'''
Se pudo escogen con "int" o "float"
pero recodermos que nosotros queremos
el "numero exacto" que el usuario no brinde
Ademas por los metodos que usaremos es mas
censillo usar "str"
'''
num=input("")
'''
"1ED if" para busacar "NUMERO NEGATIVO"
num.count("-")==1
*esto es si hay solamente un "-" en la cadena
EJM:
12-34 = pasa
1-23-54- = no pasa
num[0]=="-"
*nos indica si el "-" esta en la posiciones 0
de la cadena, es decir
EJM:
-1234 = poscion 1 (correcto)
12354- = poscion 5 (error)
si cumple con esos 2 factores el resultado seria:
-1262
*un "-"
*"-" poscion 0
'''
#"1ER if" para busacar "NUMERO NEGATIVO"
if num.count("-")==1 and num[0]=="-":
#el sw_negativo se activa (True)
#al final del codigo lo necesitaremos
sw_negativo=True
#quitamos el "-" con el metodo replace (para str)
#EJM: -514.545 → 514.545 // -54 → 54
num=num.replace("-","")
#despues agregaremos el "-"
#no se preocupen
'''
"2DO if" para busacar "NUMERO DECIMAL"
num.count(".")==1 //método de cadena encargada de contar datos
*esto es si hay solamente un "." en la cadena
EJM:
12.34 = pasa
12.354.5- = no pasa
num.replace(".","")//este método es para cadenas str y encarga de prácticamente reemplazar datos
.isdigit()//validación si la cadena es solo numérica, nos manda un dato booleano (True/False)
*teniendo en cuento todo ello nuestra cadena pasara
de 15.12 → 1512 con el método "replace", es allí
donde el "isdigit" se encarga de condicionar, si es
numérico o no.
cadena, es decir
EJM:
15.263 = correcto & 15263 = correcto
12.35fg4 = incorrecto & 1235fg4 = incorrecto
'''
'''
DATO DE INVERSA [::-1]
con el "[::-1]" muestra todos los datos
de la cadena de manera invertida
tener en cuenta este dato
abajo se estara señalando
'''
#"2DO if" para busacar "NUMERO DECIMAL"
if num.count(".")==1 and (num.replace(".","")).isdigit():
#"2DO 1 if" PUNTO POSICION 0
if num[0]==".":
num=num.replace(".","")#quita el "."
num=str(num[::-1]+".0")
#DATO DE INVERSA ↑
#le añade ".0" al final, esto por que el punto estaba en el inicio
#"2DO 2 if" PUNTO POSICION -1
elif num[-1]==".":
num=num.replace(".","")#quita el "."
num=str("0."+num[::-1])
#DATO DE INVERSA ↑
#le añade "0." al inicio, esto por que el punto estaba en el final
#"2DO 3 else" DATO CORRECTO
else:
num=num[::-1]
#no se agraga nada, por que no hay punto vacio
#es decir no hay (".61" o "61.")
#DATO DE INVERSA ↑
#"3ER if" para busacar "NUMERO ENTERO"
#.isdigit()//validación si la cadena es solo numérica, nos manda un dato booleano (True/False)
#*entrara solo si es cadena numerica
elif num.isdigit():
num=num[::-1]
#DATO DE INVERSA ↑
#ELSE (NINGUN CASO - ERROR)
#este es el punto de error debido a que no a ingresado
#ningun tipo de numero decimal,entero,negativo
else:
'''
en este caso se puso "continue" para que no leyera
las siguiente lineas de codigo, dependiendo de tu
codigo esto podria terminar en:
break, sys.exit(), continue
'''
print("error")#mensaje de error
continue
'''
VERIFICAR SI ERA NEGATIVO
en el if de:
"1ER if" para busacar "NUMERO NEGATIVO"
nos dara el dato de "sw_negativo"
puede ser True/False
negativo = True
no negativo = False
'''
if sw_negativo:
#simplemente se agrega "-" al inicio de la cadena
#anteriormente esto se quito
num=str("-"+num)
'''
queda imprimir el dato,
se puso un salto de linea solo para que se vea
de manera presentable (no es necesario)
'''
print(num,"\n")
# CÓDIGO LIMPIO↓↓
while True:
sw_negativo=False
num=input("")
if num.count("-")==1 and num[0]=="-":
sw_negativo=True
num=num.replace("-","")
if num.count(".")==1 and (num.replace(".","")).isdigit():
if num[0]==".":
num=num.replace(".","")
num=str(num[::-1]+".0")
elif num[-1]==".":
num=num.replace(".","")
num=str("0."+num[::-1])
else:
num=num[::-1]
elif num.isdigit():
num=num[::-1]
else:
print("error")
continue
if sw_negativo:
num=str("-"+num)
print(num,"\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment