Last active
November 11, 2023 21:32
-
-
Save ALEX7320/2c2306efdc77bd8c69f3fe078e1d27d9 to your computer and use it in GitHub Desktop.
Invertir cualquier número (entero,negativo,decimal) [Python 3]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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