Skip to content

Instantly share code, notes, and snippets.

@hcosta
Created February 15, 2022 11:19
Show Gist options
  • Save hcosta/589db30b61b391b089478d4c83e06ee8 to your computer and use it in GitHub Desktop.
Save hcosta/589db30b61b391b089478d4c83e06ee8 to your computer and use it in GitHub Desktop.
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]")
@edaagapu
Copy link

edaagapu commented Mar 29, 2023

Yo lo probé con f-string para este ejercicio. También me funcionó.

import sys

if len(sys.argv) == 2:
  number = sys.argv[1]
  if int(number) < 0:
    print('Error recuerde que el argumento debe ser un número entero positivo')
  else:
    for i in range(1,len(number)+1):
      format_number = int(number[len(number)-i])*(10**(i-1))
      print(f'{format_number:0{len(number)}}')
else:
  print('Argumento inválido.\nRecuerde que debe ingresar un parámetro.\nEjemplo: python3 descomposicion.py [0-n]')

@ericc91
Copy link

ericc91 commented Aug 16, 2023

Hola profe Hector, esta fue mi variante del ejercicio:

import sys
if len(sys.argv) == 2:
    num=int(sys.argv[1])
    if num < 0:
          print("El numero debe ser positivo")
    else:
        long=len(str(num))
        for i,v in enumerate(str(num)[::-1]):
            print(f"{int(v)*10**i:0{long}d}")
else:
      print("Error, se debe poner un número entero positivo, ejemplo: \"Descomposicion.py 25\"")

@nonasme
Copy link

nonasme commented Sep 6, 2023

Con pop ;)

import sys

numero = int(float(sys.argv[1]))
cadena= str(numero)
longitud = len(cadena)
lista = [digit for digit in cadena]

if (len(sys.argv) == 2) and (9999 >= numero >= 1):
    for i in range(longitud):
        valor_posicion = int(lista.pop()) * (10 ** i)
        print(f"{valor_posicion:0{longitud}d}")
else:
    print("Introduce 1 valor  entero en consola del 1 al 9999")

@luisceze1
Copy link

Yo lo hice así
`import sys

lugar = 0
if len(sys.argv) == 2:
#n = int(sys.argv[1])
s = sys.argv[1]
largo = len(s)
for i in range(largo):
lugar -= 1
n = int(s[lugar])
print(f"{n * 10 ** i:0{largo}}")
else:
print("Sólo puede haber 1 argumento")`

@Vingiloth
Copy link

Yo lo hice de la siguiente manera:

import sys 
print("Introduzca un número entero positivo")
if int(sys.argv[1])%1 != 0 or int(sys.argv[1])< 0:
    print("Introduzca un número entero positivo para poder descomponerlo")
elif int(sys.argv[1])%1 == 0 and int(sys.argv[1])>= 0:
    a = len(sys.argv[1])
    print("Se descompone el número en lo siguiente: ")
    for i in range(a):
        print(f"{int(sys.argv[1][-1-i])*(10**i):{a}}")
else:
    print("Introduzca un número entero positivo para poder descomponerlo")

@sbc-fernandadiaz
Copy link

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

a=1
for n in lista:
    print(f"{n*a:0{len(lista)}d}")
    a*=10

else:
print("Error: Introduce la cantidad de argumentos 1 entero positivo")
print("Ejemplo: descomposicion.py 1")

@Stollyni
Copy link

¡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")

@Hanmost598
Copy link

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]")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment