-
-
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]") |
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\"")
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")
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")`
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")
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")
¡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]")
Yo lo probé con f-string para este ejercicio. También me funcionó.