Vous êtes sur la page 1sur 12

2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

Entradas y salidas de datos

Presentación
En esta sección aprenderemos sobre las entradas y salidas de información, es
decir, las formas de capturar información desde el exterior (entrada) y la
visualización de esos datos (salida).

Entrada por teclado


Ya conocemos la función input() que lee una cadena por teclado. Su único
inconveniente es que debemos transformar el valor a numérico si deseamos
hacer operaciones con él:

Código Resultado

decimal = float( input("Introduce un número decimal con punto:

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 1/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

") )

Una forma interesante de leer varios valores es almacenar los datos en una lista
e irlos añadiendo ahí para poderlos manipular en grupo:

Código Resultado

valores = []
print("Introduce 3 valores")
for x in range(3):
valores.append( input("Introduce un valor: ") )
print(valores)

Por ahora no hay mucho más que comentar sobre las entradas en tiempo de
ejecución. También es posible leer datos de cheros pero eso es algo que
veremos más adelante.

Entrada por script


Hasta ahora todo lo que hemos hecho ha sido escribir código en el intérprete,
pero los programas informáticos no funcionan así. Se basan en escribir todas
las instrucciones en cheros llamados scripts (o guiones de instrucciones).
Luego se envía este chero al intérprete desde la terminal (si es un lenguaje
interpretado como Python) y éste ejecutará todas las instrucciones en bloque.

A parte de ser la base de los programas, la gracia de los Scripts es que pueden
recibir datos desde la propia terminal en el momento de la ejecución, algo muy
útil para añadirles dinamismo.

Para poder crear y ejecutar scripts hace falta un editor y una terminal, por suerte
Anaconda trae el editor Spyder y el intérprete es accesible a través de la terminal
Anaconda Prompt, ambos programas accesibles desde Inicio (o con Anaconda
Navigator si utilizáis Linux/MAC).

Script de prueba

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 2/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

Utilizando Spyder deberíais ser capaces de crear un chero hola.py con este
contenido:

Script hola.py

print("Hola, bienvenido a tu primer script")

Lo podéis guardar en el directorio que queráis, yo lo guardaré en una carpeta del


disco, en C:\Scripts para tenerlo a mano.

A continuación para ejecutarlo abríramos Anaconda Prompt y navegaríamos con


el comando cd (change directory) al directorio donde tenemos los scripts:

Terminal

cd C:\Scripts

Por último ejecutaremos el script pasándolo al intérprete de python y veremos el


resultado del print() en la terminal:

Ejecución Resultado

python hola.py

Scripts con argumentos

Para poder enviar información a un script y manejarla, tenemos que utilizar la


librería de sistema sys. En ella encontraremos la lista argv que almacena los
argumentos enviados al script. Cread el siguiente script y ejecutadlo:

Script argumentos.py Ejecución Resultado

import sys

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 3/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

print(sys.argv)

Al ejecutarlo veréis que devuelve una lista con una cadena que contiene el
nombre del script. Quedaros con la idea pues, de que el primer argumento de la
lista sys.argv (sys.argv[0]) es el propio nombre del script.

Ahora intentad ejecutarlo de nuevo pasando algunos valores como números y


cadenas de texto entre comillas dobles, todo separado por espacios:

Ejecución Resultado

python argumentos.py 100 "Hola" 3.14

Cada valor que enviamos al script durante la llamada se llama argumento e


implica una forma de entrada de datos alternativa sin usar el input().

El siguiente ejemplo es un script que recibe dos argumentos: un texto y un


número entero. Lo que hace es imprimir la cadena de texto tantas veces como le
indiquemos en el número. Tomaos el tiempo necesario para analizar y entender
cada línea:

Script escribir_lineas.py Ejecución Resultado

import sys

# Comprobación de seguridad, ejecutar sólo si se reciben 2


argumentos reales
if len(sys.argv) == 3:
texto = sys.argv[1]
repeticiones = int(sys.argv[2])
for r in range(repeticiones):
print(texto)
else:
print("Error - Introduce los argumentos correctamente")
print('Ejemplo: escribir_lineas.py "Texto" 5')

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 4/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

Salida por pantalla


La función print() es la forma general de mostrar información por pantalla.
Generalmente podemos mostrar texto y variables separándolos con comas:

Código Resultado

v = "otro texto"
n = 10

print("Un texto",v,"y un número",n)

El método .format()

Es una funcionalidad de las cadenas de texto que nos permite formatear


información en una cadena (variables o valores literales) cómodamente
utilizando identi cadores referenciados:

Código Resultado

c = "Un texto '{}' y un número '{}'".format(v,n)


print(c)

También podemos referenciar a partir de la posición de los valores utilizando


índices:

Código Resultado

print( "Un texto '{1}' y un número '{0}'".format(v,n) )


print(c)

O podemos utilizar identi cador con una clave y luego pasarlas en el format:

Código Resultado

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 5/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

print( "Un texto '{v}' y un número '{n}'".format(n=n,v=v) )

Código Resultado

print("{v},{v},{v}".format(v=v))

Formateo avanzado

Este método soporta muchas técnicas de formateo, aquí algunos ejemplos.

Alineamiento a la derecha en 30 caracteres:

Código Resultado

print( "{:>30}".format("palabra") )

Alineamiento a la izquierda en 30 caracteres (crea espacios a la derecha):

Código Resultado

print( "{:30}".format("palabra") )

Alineamiento al centro en 30 caracteres:

Código Resultado

print( "{:^30}".format("palabra") )

Truncamiento a 3 caracteres:

Código Resultado

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 6/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

print( "{:.3}".format("palabra") )

Alineamiento a la derecha en 30 caracteres con truncamiento de 3:

Código Resultado

print( "{:>30.3}".format("palabra") )

Formateo de números enteros, rellenados con espacios:

Código Resultado

print("{:4d}".format(10))
print("{:4d}".format(100))
print("{:4d}".format(1000))

Formateo de números enteros, rellenados con ceros:

Código Resultado

print("{:04d}".format(10))
print("{:04d}".format(100))
print("{:04d}".format(1000))

Formateo de números otantes, rellenados con espacios:

Código Resultado

print("{:7.3f}".format(3.1415926))
print("{:7.3f}".format(153.21))

Formateo de números otantes, rellenados con ceros:

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 7/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

Código Resultado

print("{:07.3f}".format(3.1415926))
print("{:07.3f}".format(153.21))

Format simpli cado

La actualización de Python 3.6 trajo la novedad de poder concatenar variables y


cadenas de una forma muy cómoda sin utilizar el format().

Hasta ahora para concadenar hacíamos lo siguiente:

Código Resultado

nombre = "Héctor"
texto = "Hola {}".format(nombre)
print(texto)

La nueva sintaxis nos permite ahorrarnos el método:

Código Resultado

nombre = "Héctor"
texto = f"Hola {nombre}"
print(texto)

Sólo tenemos que indicar f antes de la cadena y sustituir las variables por sus
nombre.

Ejercicios optativos
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)

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 8/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

"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

Ejercicio Solución Resultado

# Espacio reservado para no mostrar la solución

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 las 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:

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 9/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

import sys
print(sys.argv) # argumentos enviados

Ejercicio Solución Ejecución Resultado

# Espacio reservado para no mostrar la solución

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:

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:

0007
0040
0600
3000

 Pista

Que el valor sea un número no signi ca 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 a números de 4 dígitos o menos:

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 10/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

Ejercicio Solución Ejecución Resultado

# Espacio reservado para no mostrar la solución

Solución sin límite de dígitos:

Ejercicio Solución Ejecución Resultado

# Espacio reservado para no mostrar la solución

Última edición: 25 de Septiembre de 2018

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 11/12
2/10/2018 Entradas y salidas de datos | Curso de Python | Hektor Profe

https://www.hektorprofe.net/python/entradas-y-salidas/#entrada-por-teclado 12/12