Created
February 15, 2022 11:19
-
-
Save hcosta/589db30b61b391b089478d4c83e06ee8 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
import sys | |
if len(sys.argv) == 2: | |
numero = int(sys.argv[1]) | |
if numero < 0: | |
print("Error - Número es incorrecto") | |
print("Ejemplo: descomposicion.py [0-999999999999999999999999]") | |
else: | |
# Aqui va la lógica | |
cadena = str(numero) | |
longitud = len(cadena) | |
for i in range(longitud): | |
# Utilizamos identificadores para la cadena y la longitud | |
print( "{cadena:0{longitud}d}".format( | |
cadena=int(cadena[longitud-1-i]) * 10 ** i, | |
longitud=longitud)) | |
else: | |
print("Error - Argumentos incorrectos") | |
print("Ejemplo: descomposicion.py [0-999999999999999999999999]") |
¡Hola! Yo tomé un enfoque un poco diferente:
import sys
print(sys.argv)
if len(sys.argv) == 2:
numero = int(sys.argv[1])
if numero <0 or numero > 9999:
print(
"El número ingresado no es válido"
"Recuerda, debes ingresar un número MAYOR que 0 y MENOR que 9,999"
)
else:
lista = []
cadena = str(numero)
for n in cadena:
lista.append(n)
while lista:
digito = lista.pop()
print("{:04d}".format(int(digito)))
else:
print("Ingresa un número MAYOR que 0 y MENOR que 9,999")
#Sin embargo, aunque estaba utilizando .pop( ), el primer dígito en imprimirse era el de la izquierda y no el de la derecha.
#Así que tuve que modificar el código para invertir la cadena:
import sys
print(sys.argv)
if len(sys.argv) == 2:
numero = int(sys.argv[1])
if numero <0 or numero > 9999:
print(
"El número ingresado no es válido"
"Recuerda, debes ingresar un número MAYOR que 0 y MENOR que 9,999"
)
else:
lista = []
cadena = str(numero)
cadena_invertida= cadena[::-1]
for n in cadena_invertida:
lista.append(n)
while lista:
digito = lista.pop(-1)
print("{:04d}".format(int(digito)))
else:
print("Ingresa un número MAYOR que 0 y MENOR que 9,999")
Con denominaciones
Yo ejecute el código de la siguiene manera, delimitando la cantidad de carácteres que pueden ser ingresados y dando como resultado el número junto con la denominación correspondiente:
import sys
if len(sys.argv) == 2:
numero = sys.argv[1]
if int(sys.argv[1]) < 0 or int(sys.argv[1]) > 99999:
print('ERROR - El número debe ser un entero positivo, comprendido entre 0 y 99999\nEJEMPLO: descomposicion.py [número]')
else:
longitud = int(len(numero))
denominacion = ["Unidades", "Decenas", "Centenas", "Unidades de mil", "Decenas de mil"]
print(f'La distribución del número ingresado se expresa de la siguiente manera:')
for i in range(longitud):
resultado = int(numero[longitud-i-1]) * 10 ** i #Determina si el caracter es una unidad, una decena, centena, etc...
print(f'{resultado:{longitud}d} {denominacion[i]}')
else:
print("ERROR - Argumentos invalidos")
print("EJEMPLO: descomposicion.py [0 - 99999]")
Hola, yo lo hice con una lista y aplique el formato dos veces y funciono:
import sys
j=1
print(sys.argv[1:3])
lista=list(sys.argv[1])
j=len(lista)
if len(sys.argv)==2:
for i,v in enumerate(lista):
f=f"{lista[j-1]:<0{i+1}}"
print(f"{f:>0{len(lista)}}")
j=j-1
else:
print("La forma corecta recibir los argumentos ejemplo: descomposicion.py [1-9999999999]")
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hola. Lo realicé de la siguiente manera:
import sys
print(sys.argv) # argumentos enviados
if len(sys.argv)== 2:
numero = (sys.argv[1])
long = len(numero)
numero = int(numero)
med = 1
lista =[]
while long > 0:
digito = int((numero / med) % 10)
lista.append(digito)
long-=1
med *=10
else:
print("Error: Introduce la cantidad de argumentos 1 entero positivo")
print("Ejemplo: descomposicion.py 1")