Está en la página 1de 4

1/12/2015 Entrada y salida. Python.

 Bartolomé Sintes Marco

Entrada y salida
En Informática, la "entrada" de un programa son los datos que llegan al programa desde el exterior (normalmente a través del teclado) y la "salida" de un
programa son los datos que el programa proporciona al exterior (normalmente en la pantalla del ordenador).
En esta lección se tratan los casos más sencillos de entrada y salida:
Salida por pantalla
Entrada por teclado
La función input()
Conversión de tipos
Variables como argumento de la función input()

Los ejemplos de esta lección se deben ejecutar en un programa, no en el prompt de IDLE.

Salida por pantalla
La función print()

Aunque  como  hemos  visto  en  la  lección  Variables,  en  IDLE  se  puede  mostrar  texto  o  el  valor  de  una  variable  escribiendo  simplemente  el  texto  o  el
nombre de la variable, en los programas hay que utilizar la función print().

La función print() permite mostrar texto en pantalla. El texto a mostrar se escribe como argumento de la función:

print("Hola") Hola
Las cadenas se pueden delimitar tanto por comillas dobles (") como por comillas simples (').

print('Hola') Hola
Nota: En estos apuntes se utilizan normalmente comillas dobles.

La función print() admite varios argumentos seguidos. En el programa, los argumentos deben separarse por comas. Los argumentos se muestran en el
mismo orden y en la misma línea, separados por espacios:

print("Hola", "Adios") Hola Adios
Al final de cada print(), Python añade automáticamente un salto de línea:

print("Hola") Hola 
print("Adios") Adios
Para generar una línea en blanco, se puede escribir una orden print() sin argumentos.

print("Hola") Hola
print()
print("Adios") Adios
Si no se quiere que Python añada un salto de línea al final de un print(), se debe añadir al final el argumento end="":

print("Hola", end="") HolaAdios
print("Adios")
En el ejemplo anterior, las dos cadenas se muestran pegadas. Si se quieren separar los argumentos en la salida, hay que incluir los espacios deseados
(bien en la cadena, bien en el argumento end):

print("Hola.   ", end="") Hola. Adios


print("Adios")
print("Hola.", end="   ") Hola. Adios
print("Adios")

Como las comillas indican el principio y el final de una cadena, si se escriben comillas dentro de comillas se produce un error de sintaxis.

print("Un tipo le dice a otro: "¿Cómo estás?"")

print('Un tipo le dice a otro: '¿Cómo estás?'')

http://www.mclibre.org/consultar/python/lecciones/python_entrada_salida.html 1/4
1/12/2015 Entrada y salida. Python. Bartolomé Sintes Marco

Nota: Si nos fijamos en la forma como IDLE colorea la instrucción, podemos darnos cuenta de que hay un error en ella. Como las cadenas empiezan y
acaban con cada comilla, IDLE identifica dos cadenas y un texto enmedio que no sabe lo que es.
Para incluir comillas dentro de comillas, se puede escribir una contrabarra (\) antes de la comilla para que Python reconozca la comilla como carácter, no
como delimitador de la cadena:

print("Un tipo le dice a otro: \"¿Cómo estás?\"") Un tipo le dice a otro: "¿Cómo estás?" 
print('Y el otro le contesta: \'¡Pues anda que tú!\'') Y el otro le contesta: '¡Pues anda que tú!'
O escribir comillas distintas a las utilizadas como delimitador de la cadena:

print("Un tipo le dice a otro: '¿Cómo estás?'") Un tipo le dice a otro: '¿Cómo estás?' 
print('Y el otro le contesta: "¡Pues anda que tú!"') Y el otro le contesta: "¡Pues anda que tú!"

La función print() permite incluir variables o expresiones como argmento, lo que nos permite combinar texto y variables:

nombre = "Pepe" Me llamo Pepe y tengo 25 años.
edad = 25
print("Me llamo", nombre, "y tengo", edad, "años.")
semanas = 4 En 4 semanas hay 28 días.
print("En", semanas , "semanas hay", 7 * semanas, "días.")

Se puede forzar que las variables se escriban como enteros o decimales, utilizando las funciones int() o float(), respectivamente.

>>> print(int(2.9))
2
>>> print(float(2))
2.0

La función print() muestra los argumentos separados por espacios, lo que a veces no es conveniente . En el ejemplo siguiente el signo de exclamación
se muestra separado de la palabra.

nombre = "Pepe" ¡Hola, Pepe   !
print("¡Hola,", nombre, "!")
        
Para eliminar ese espacio, se puede reducir el número de argumentos, concatenando texto y variables con el operador suma (+):

nombre = "Pepe" ¡Hola, Pepe!
print("¡Hola,", nombre + "!") ¡Hola, Pepe!
print("¡Hola, " + nombre + "!")
Pero hay que tener cuidado, porque no se pueden concatenar cadenas y números con el operador suma (+):

fecha = 2013 Traceback (most recent call last):
print("¡Feliz " + fecha + "!")   File "ejemplo.py", line 2, in <module>
    print("¡Feliz " + fecha + "!")
TypeError: Can't convert 'int' object to str
implicitly
En este caso, hay que convertir los números a cadenas con la función str() antes de concatenarlos:

fecha = 2013 ¡Feliz 2013 ! 
print("¡Feliz", fecha, "!") ¡Feliz 2013!
print("¡Feliz", str(fecha) + "!") ¡Feliz 2013!
print("¡Feliz " + str(fecha) + "!")

Entrada por teclado
La función input()

La función input() permite obtener texto escrito por teclado. Al llegar a la función, el programa se detiene esperando que se escriba algo y se pulse la
tecla Intro, como muestra el siguiente ejemplo:

print("¿Cómo se llama?") ¿Cómo se llama? 
nombre = input() Pepe
print("Me alegro de conocerle,", nombre) Me alegro de conocerle, Pepe
En el ejemplo anterior, el usuario escribe su respuesta en una línea distinta a la pregunta porque Python añade un salto de línea al final de cada print().
Si se prefiere que el usuario escriba su respuesta a continuación de la pregunta, se podría utilizar el argumento opcional end en la función print(),  que
indica  el  carácter  o  caracteres  a  utilizar  en  vez  del  salto  de  línea.  Para  separar  la  respuesta  de  la  pregunta  se  ha  añadido  un  espacio  al  final  de  la
pregunta.
http://www.mclibre.org/consultar/python/lecciones/python_entrada_salida.html 2/4
1/12/2015 Entrada y salida. Python. Bartolomé Sintes Marco

print("¿Cómo se llama? ", end="") ¿Cómo se llama? Pepe 
nombre = input() Me alegro de conocerle, Pepe
print("Me alegro de conocerle,", nombre)
Otra solución, más compacta, es aprovechar que a la función input() se le puede enviar un argumento que se escribe en la pantalla (sin añadir un salto
de línea):

nombre = input("¿Cómo se llama? ") ¿Cómo se llama? Pepe 
print("Me alegro de conocerle,", nombre) Me alegro de conocerle, Pepe

Conversión de tipos

De forma predeterminada, la función input() convierte la entrada en una cadena. Si se quiere que Python interprete la entrada como un número entero, se
debe utilizar la función int() de la siguiente manera:

cantidad = int(input("Dígame una cantidad en pesetas: "))
print(cantidad, "pesetas son", cantidad / 166.386, "euros")

De la misma manera, para que Python interprete la entrada como un número decimal, se debe utilizar la función float() de la siguiente manera:

cantidad = float(input("Dígame una cantidad en euros (hasta con 2 decimales): "))
print(cantidad, "euros son", cantidad * 166.386, "pesetas")

Pero si el usuario no escribe un número, las funciones int() o float() producirán un error:

cantidad = float(input("Dígame una cantidad en euros: ")) Dígame una cantidad en euros: Pepito
print(cantidad, "euros son", cantidad * 166.386, "pesetas") Traceback (most recent call last):
  File "ejemplo.py", line 1, in <module>
    cantidad = float(input("Dígame una cantidad en euros: "))
ValueError: could not convert string to float: 'Pepito'
De la misma manera, si el usuario escribe un número decimal, la función int() producirá un error:

edad = int(input("Dígame su edad: ")) Dígame su edad: 15.5
print("Su edad son", edad, "años") Traceback (most recent call last):
  File "ejemplo.py", line 1, in <module>
    edad = int(input("Dígame su edad: "))
ValueError: invalid literal for int() with base 10: '15.5'
Pero si el usuario escribe un número entero, la función float() no producirá un error, aunque el número se escribirá con parte decimal (.0):

peso = float(input("Dígame su peso en kg: ")) Dígame su peso en kg: 84
print("Su peso es", peso, "kg") Su peso es  84.0  kg

Variables como argumento de la función input()

La función input() sólo puede tener un argumento. Esto puede causar problemas como en el ejemplo siguiente, en el que se quiere mostrar la respuesta
de la primera instrucción en la segunda pregunta:

nombre = input("Dígame su nombre: ") Dígame su nombre: Pepito
apellido = input("Dígame su apellido, ", nombre, ": ") Traceback (most recent call last):
print("Me alegro de conocerle,", nombre, apellido)   File "ejemplo.py", line 2, in <module>
    apellido = input("Dígame su apellido, ", nombre, ": ")
TypeError: input expected at most 1 arguments, got 3
Una solución consiste en separar la pregunta de la recogida de la respuesta, escribiendo dos instrucciones:

nombre = input("Dígame su nombre: ") Dígame su nombre: Pepito
print("Dígame su apellido,", nombre, ": ", end="") Dígame su apellido, Pepito : Conejo
apellido = input() Me alegro de conocerle, Pepito Conejo
print("Me alegro de conocerle,", nombre, apellido)
Si se quiere que los dos puntos (:) salgan pegados al nombre habría que utilizar la concatenación (operador +):

nombre = input("Dígame su nombre: ") Dígame su nombre: Pepito
print("Dígame su apellido,", nombre + ": ", end="") Dígame su apellido, Pepito: Conejo
apellido = input() Me alegro de conocerle, Pepito Conejo
print("Me alegro de conocerle,", nombre, apellido)
Pero también se puede incluir la pregunta en la recogida de la respuesta, utilizando la concatenación (operador +):

nombre = input("Dígame su nombre: ") Dígame su nombre: Pepito
apellido = input("Dígame su apellido, " + nombre +  ": ") Dígame su apellido, Pepito: Conejo
print("Me alegro de conocerle,", nombre, apellido) Me alegro de conocerle, Pepito Conejo
Si se opta por esta solución, hay que tener en cuenta que, en caso de querer concatenar cadenas y números, se debe utilizar la función str(), como se ha
comentado en el apartado anterior:

numero1 = int(input("Dígame un número: ")) Dígame un número: 5
numero2 = int(input("Dígame un número mayor que " +  numero1  +  ": ")) Traceback (most recent call last):
print("La diferencia entre ellos es", numero2 ‐ numero1)   File "ejemplo.py", line 2, in <module>
    numero2 = int(input("Dígame un número mayor que " + n

http://www.mclibre.org/consultar/python/lecciones/python_entrada_salida.html 3/4
1/12/2015 Entrada y salida. Python. Bartolomé Sintes Marco
TypeError: Can't convert 'int' object to str implicitly
        
numero1 = int(input("Dígame un número: ")) Dígame un número: 5
numero2 = int(input("Dígame un número mayor que " +  str(numero1)  +  ": ")) Dígame un número mayor que 5: 8
print("La diferencia entre ellos es", numero2 ‐ numero1) La diferencia entre ellos es 3

Última modificación de esta página: 31 de enero de 2015

Introducción a la programación con Python por Bartolomé Sintes Marco
se distribuye bajo una Licencia Creative Commons Reconocimiento­CompartirIgual 4.0 Internacional (CC BY­SA 4.0).

http://www.mclibre.org/consultar/python/lecciones/python_entrada_salida.html 4/4

También podría gustarte