Saltar a contenido

Ejercicios « Entradas y salidas de datos

Ejercicio 1

Formatea los siguientes valores para mostrar el resultado indicado:

  • "Hola Mundo" → Alineado a la derecha en 20 caracteres
  • "Hola Mundo" → Truncamiento en el cuarto carácter (índice 3)
  • "Hola Mundo" → Alineamiento al centro en 20 caracteres con truncamiento en el segundo carácter (índice 1)
  • 150 → Formateo a 5 números enteros rellenados con ceros
  • 7887 → Formateo a 7 números enteros rellenados con espacios
  • 20.02 → Formateo a 3 números enteros y 3 números decimales

Solución

Note

print( "{:>20}".format("Hola Mundo") )
print( "{:.3}".format("Hola Mundo") )
print( "{:^20.2}".format("Hola Mundo") )
print( "{:05d}".format(150) )
print( "{:7d}".format(7887) )
print( "{:07.3f}".format(20.02) )
          Hola Mundo
Hol
         Ho         
00150
7887
020.020

Ejercicio 2

Crea un script llamado tabla.py que realice las siguientes tareas:

  • Debe tomar 2 argumentos, ambos números enteros positivos del 1 al 9, sino mostrará un error.
  • El primer argumento hará referencia a las filas de una tabla, el segundo a las columnas.
  • En caso de no recibir uno o ambos argumentos, debe mostrar información acerca de cómo utilizar el script.
  • El script contendrá un bucle for que itere el número de veces del primer argumento.
  • Dentro del for, añade un segundo for que itere el número de veces del segundo argumento.
  • Dentro del segundo for ejecuta una instrucción print(" * ", end=''), (end='' evita el salto de línea).
  • Ejecuta el código y observa el resultado.
  • Intenta deducir dónde y cómo añadir otra instruccion print() para dibujar una tabla.

Recordatorio

Recordatorio: Los argumentos se envían como cadenas separadas por espacios, si quieres enviar varias palabras como un argumento deberás indicarlas entre comillas dobles "esto es un argumento". Para capturar los argumentos debes utilizar el módulo sys y su lista argv:

import sys
print(sys.argv) # argumentos enviados

Solución

Note

import sys

if len(sys.argv) == 3:
    filas = int(sys.argv[1])
    columnas = int(sys.argv[2])

    if filas < 1 or filas > 9 or columnas < 1 or columnas > 9:
        print("Error - Filas o columnas incorrectos")
        print("Ejemplo: tabla.py [1-9] [1-9]")
    else:
        # Aqui empieza la lógica
        for f in range(filas):
            print("")
            for c in range(columnas):
                print(" * ", end='')

else:
    print("Error - Argumentos incorrectos")
    print("Ejemplo: tabla.py [1-9] [1-9]")
python tabla.py 5 5
*  *  *  *  *
*  *  *  *  *
*  *  *  *  *
*  *  *  *  *
*  *  *  *  *

Ejercicio 3

Crea un script llamado descomposicion.py que realice las siguientes tareas:

  • Debe tomar 1 argumento que será un número entero positivo.
  • En caso de no recibir un argumento, debe mostrar información acerca de cómo utilizar el script.

El objetivo del script es descomponer el número en unidades, decenas, centenas, miles... tal que por ejemplo si se introduce el número 3647:

Note

python descomposicion.py 3647

El programa deberá devolver una descomposición línea a línea como la siguiente utilizando las técnicas de formateo:

Note

0007
0040
0600
3000

Pista

Que el valor sea un número no significa necesariamente que deba serlo para formatearlo. Necesitarás jugar muy bien con los índices y realizar muchas conversiones entre tipos cadenas, números y viceversa

Solución limitada

Esta solución presenta el límite de números con un máximo de 4 dígitos.

Note

import sys

if len(sys.argv) == 2:
    numero = int(sys.argv[1])
    if numero < 0 or numero > 9999:
        print("Error - Número es incorrecto")
        print("Ejemplo: descomposicion.py [0-9999]")
    else:
        # Aqui va la lógica
        cadena = str(numero)
        longitud = len(cadena)

        for i in range(longitud):
            print( "{:04d}".format( int(cadena[longitud-1-i]) * 10 ** i ))

else:
    print("Error - Argumentos incorrectos")
    print("Ejemplo: descomposicion.py [0-9999]")
python descomposicion.py 3647
0007
0040
0600
3000

Solución sin límite

Esta solución permite introducir un número con dígitos indefinidos, limitado por las capacidades de Python en sí mismo.

Note

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 identificadors 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]")
python test.py 999999999999
000000000009
000000000090
000000000900
000000009000
000000090000
000000900000
000009000000
000090000000
000900000000
009000000000
090000000000
900000000000

Última edición: 25 de Septiembre de 2018