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