
Después de aprender a trabajar con variables y operadores, es el momento de que nuestros programas puedan interactuar con el usuario. En este capítulo aprenderemos a solicitar información mediante la función input(), lo que nos permitirá crear programas mucho más dinámicos.
1. Solicitar datos al usuario con la función input()
La función input() permite que el usuario escriba información utilizando el teclado mientras el programa se está ejecutando.
Su sintaxis es la siguiente:
input("Escribe un dato: ")
El texto que aparece entre comillas recibe el nombre de mensaje o prompt y sirve para indicar al usuario qué información debe introducir.
Consejo: Es habitual terminar el mensaje de input() con dos puntos (:) o un signo de interrogación (?) seguido de un espacio para que el texto introducido por el usuario quede más legible.
2. Almacenar la información en variables
Como el dato introducido mediante input() se perdería si no lo guardamos, normalmente lo almacenamos en una variable para poder utilizarlo posteriormente.
Por ejemplo:
nombre = input("¿Cómo te llamas? ")
print("Hola", nombre)
Si el usuario escribe:
Andrea
el programa mostrará:
Hola Andrea
Observa que print() añade automáticamente un espacio entre los elementos cuando los separamos con comas.
También podemos obtener el mismo resultado utilizando el operador + para concatenar cadenas de texto.
nombre = input("¿Cómo te llamas? ")
print("Hola " + nombre)
En este caso es necesario escribir un espacio al final de "Hola ", ya que el operador + une ambas cadenas exactamente como están escritas.
¿Sabías que…? La función input() siempre devuelve una cadena de texto (str), aunque el usuario escriba un número.
3. Convertir el tipo de los datos
Como input() siempre devuelve una cadena de texto (str), si queremos realizar operaciones matemáticas o trabajar con otros tipos de datos debemos convertir el valor introducido por el usuario.
Las funciones de conversión permiten transformar un dato de un tipo en otro. En este capítulo las utilizaremos principalmente para convertir el texto que devuelve input() en números.
edad = int(input("Edad: "))
altura = float(input("Altura: "))
Consejo: Utiliza int() cuando esperes un número entero, como una edad, una cantidad o un número de alumnos. Si el dato puede contener decimales, como una altura, un peso o una temperatura, utiliza float().
Como input() ya devuelve una cadena de texto (str), normalmente no es necesario utilizar str(). Sin embargo, esta función resulta útil cuando queremos convertir un número en una cadena de texto para concatenarlo con otros textos.
Por ejemplo:
precio = 19.95 mensaje = "El precio es " + str(precio) + " euros." print(mensaje)
Resultado:
El precio es 19.95 euros.
Aunque en muchos casos también podemos utilizar print() separando los elementos con comas, conocer str() nos será útil cuando necesitemos construir cadenas de texto más complejas.
La siguiente tabla resume algunos ejemplos habituales.
| Código | Resultado | Motivo |
|---|---|---|
edad = input("Edad: ") | "20" (str) | input() siempre devuelve texto. |
edad = int(input("Edad: ")) | 20 (int) | Convierte el texto en un número entero. |
altura = float(input("Altura: ")) | 1.68 (float) | Convierte el texto en un número decimal. |
texto = str(25) | "25" (str) | Convierte un número en texto. |
edad = int(input("Edad: "))print(edad + 1) | Si el usuario escribe 20, se muestra 21. | Al convertir el dato con int(), podemos realizar operaciones matemáticas. |
edad = input("Edad: ")print(edad + 1) | TypeError | No se puede sumar una cadena de texto (str) y un número (int). |
edad = int(input("Edad: "))Usuario: 20.5 | ValueError | int() solo admite números enteros. Si el dato puede tener decimales, debemos utilizar float(). |
altura = float(input("Altura: "))Usuario: 1,68 | ValueError | En Python los números decimales utilizan el punto (.) como separador decimal, no la coma. |
edad = float(input("Edad: "))Usuario: veinte | ValueError | El texto introducido no representa un número válido. |
Consejo: Recuerda que input() siempre devuelve texto. Siempre que necesites realizar operaciones matemáticas deberás convertir previamente el dato utilizando int() o float().
4. Ejemplo completo
nombre = input("Nombre: ")
edad = int(input("Edad: "))
altura = float(input("Altura (m): "))
print("Nombre:", nombre)
print("Edad:", edad)
print("Altura:", altura)
print("El año que viene tendrás", edad + 1, "años.")
Si el usuario introduce:
Andrea 41 1.68
el programa mostrará:
Nombre: Andrea Edad: 41 Altura: 1.68 El año que viene tendrás 42 años.
5. Errores habituales al usar input()
Cuando comenzamos a utilizar input() es frecuente cometer algunos errores.
| Error | Solución |
|---|---|
Escribir input en lugar de input() | Recordar que es una función y debe llamarse con paréntesis. |
Escribir int(input) en lugar de int(input()) | Recordar que input es una función y debe llamarse con paréntesis. |
| Olvidar las comillas del mensaje | Escribir siempre el texto entre comillas. |
Olvidar los paréntesis de print() o input() | Ambas son funciones y siempre llevan paréntesis. |
| Olvidar el espacio al concatenar cadenas | Escribir "Hola " o utilizar print("Hola", nombre). |
Consejo: Si tu programa produce un error, comprueba primero que input() y print() llevan paréntesis, que has utilizado int() o float() cuando sea necesario y que el usuario ha introducido un dato con el formato esperado.
Ya sabemos solicitar información al usuario y utilizarla en nuestros programas. En el siguiente capítulo aprenderemos a trabajar con cadenas de texto, creando, modificando y analizando información textual mediante las herramientas que ofrece Python.
6. Actividad
7. Prácticas resueltas
Los siguientes ejercicios muestran distintas aplicaciones de la función input(). Intenta resolver cada uno por tu cuenta antes de consultar la solución.
7.1. Área de un rectángulo
Crea un archivo llamado area.py.
Solicita al usuario:
- La base del rectángulo.
- La altura del rectángulo.
Convierte ambos datos a float, calcula el área (Área = base × altura) y muestra el resultado.
Resultado esperado (ejemplo):
Base: 6.5 Altura: 2 Área: 13.0
Solución:
base = float(input("Base: "))
altura = float(input("Altura: "))
area = base * altura
print("Base:", base)
print("Altura:", altura)
print("Área:", area)
7.2. Conversión de grados Celsius a Fahrenheit
Crea un archivo llamado temperatura.py.
Solicita una temperatura en grados Celsius.
Convierte el dato a float y calcula los grados Fahrenheit utilizando la fórmula: F = (C × 9 / 5) + 32
Muestra el resultado.
Solución:
celsius = float(input("Grados Celsius: "))
fahrenheit = celsius * 9 / 5 + 32
print("Temperatura en Fahrenheit:", fahrenheit)
7.3. Cálculo del precio con IVA
Crea un archivo llamado iva.py.
Solicita:
- El precio de un producto.
Convierte el dato a float, calcula el precio con un IVA del 21 % (Precio final = precio × 1.21) y muestra ambos valores.
Solución:
precio = float(input("Precio: "))
precio_final = precio * 1.21
print("Precio sin IVA:", precio)
print("Precio con IVA:", precio_final)
7.4. Conversión de segundos
Crea un archivo llamado segundos.py.
Solicita una cantidad de segundos.
Convierte el dato a entero y calcula:
- Horas.
- Minutos.
- Segundos restantes.
Muestra el resultado.
Ejemplo:
Introduce los segundos: 3675 3675 segundos son 2 horas, 1 minutos y 15 segundos.
Solución:
segundos = int(input("Introduce los segundos: "))
horas = segundos // 3600
resto = segundos % 3600
minutos = resto // 60
segundos_restantes = resto % 60
print(segundos, "segundos son", horas, "horas,", minutos, "minutos y", segundos_restantes, "segundos.")
7.5. Nota media
Crea un archivo llamado nota_media.py.
Solicita las notas de tres exámenes.
Convierte los datos a float, calcula la nota media y muéstrala por pantalla.
Solución:
nota1 = float(input("Primera nota: "))
nota2 = float(input("Segunda nota: "))
nota3 = float(input("Tercera nota: "))
media = (nota1 + nota2 + nota3) / 3
print("Nota media:", media)
Ejemplo de ejecución:
Primera nota: 8 Segunda nota: 6.5 Tercera nota: 9 Nota media: 7.83
8. Test de autoevaluación
Comprueba si has comprendido los conceptos principales de este capítulo respondiendo al siguiente test. Si alguna respuesta no es correcta, revisa el apartado correspondiente antes de continuar con el siguiente tema.
8.1. ¿Para qué se utiliza la función input()?
a) Para mostrar información por pantalla.
b) Para solicitar datos al usuario. ✅
c) Para crear variables.
d) Para convertir números.
Retroalimentación: input() permite que el usuario introduzca datos mediante el teclado.
8.2. ¿Qué tipo de dato devuelve siempre input()?
a) int
b) float
c) str ✅
d) bool
Retroalimentación: Aunque el usuario escriba un número, input() siempre devuelve una cadena de texto.
8.3. ¿Qué hace este programa?
nombre = input("¿Cómo te llamas? ")
print("Hola", nombre)
a) Solicita el nombre del usuario y lo muestra después. ✅
b) Muestra siempre «Hola».
c) Produce un error.
d) Guarda un número.
Retroalimentación: El valor introducido por el usuario se almacena en la variable nombre.
8.4. ¿Qué debemos hacer si queremos utilizar un número entero introducido con input()?
a) Nada.
b) Convertirlo con int(). ✅
c) Convertirlo con str().
d) Utilizar len().
Retroalimentación: Como input() devuelve una cadena, debemos convertirla a entero mediante int().
8.5. ¿Qué mostrará este programa si el usuario escribe 8?
edad = int(input("Edad: "))
print(edad + 2)
a) 82
b) 10 ✅
c) 8
d) Error
Retroalimentación: Al convertir el dato con int(), se realiza una suma numérica.
8.6. ¿Qué ocurrirá si olvidamos convertir un número introducido mediante input()?
a) No ocurre nada.
b) Siempre se obtiene un número decimal.
c) Podemos obtener un resultado incorrecto o un error. ✅
d) Python convierte automáticamente el dato.
Retroalimentación: Si el dato sigue siendo una cadena, algunas operaciones no funcionarán como esperamos.
8.7. ¿Qué función utilizamos para convertir un número decimal?
a) int
b) float ✅
c) str
d) len
Retroalimentación: float() convierte una cadena en un número decimal.
8.8. ¿Qué mostrará este programa si el usuario escribe 5?
numero = input("Número: ")
print(numero * 2)
a) 10
b) 25
c) 55 ✅
d) Error
Retroalimentación: Como numero es una cadena, el operador * repite el texto.
8.9. ¿Qué mostrará este programa si el usuario escribe 5?
numero = int(input("Número: "))
print(numero * 2)
a) 55
b) 10 ✅
c) 52
d) Error
Retroalimentación: Al convertir el dato con int(), la multiplicación es numérica.
8.10. ¿Qué función convierte cualquier dato en una cadena de texto?
a) int()
b) float()
c) str() ✅
d) input()
Retroalimentación: str() transforma cualquier valor en una cadena de texto.
8.11. ¿Qué ocurre si escribimos un texto cuando el programa espera un entero mediante int(input())?
a) Python lo convierte automáticamente.
b) Se obtiene el valor 0.
c) Se produce un error. ✅
d) El programa continúa normalmente.
Retroalimentación: int() solo puede convertir textos que representen números enteros.
8.12. ¿Cuál de estos programas solicita correctamente la edad del usuario?
a)
edad = input("Edad: ")
b)
edad = int(input("Edad: "))
✅
c)
input = edad("Edad")
d)
edad = print("Edad:")
Retroalimentación: Si queremos trabajar con la edad como un número entero, debemos utilizar int(input(...)).
8.13. ¿Qué hace este programa?
nombre = input("Nombre: ")
edad = input("Edad: ")
a) Solicita dos datos al usuario. ✅
b) Muestra dos mensajes.
c) Produce un error.
d) Calcula la edad.
Retroalimentación: Cada llamada a input() solicita un dato diferente.
8.14. ¿Cuál de las siguientes afirmaciones es correcta?
a) Podemos utilizar varias veces la función input() en un mismo programa. ✅
b) Solo puede utilizarse una vez.
c) input() únicamente sirve para números.
d) input() devuelve siempre un entero.
Retroalimentación: Podemos utilizar tantas llamadas a input() como necesitemos.
8.15. ¿Por qué es importante convertir los datos introducidos con input() cuando vamos a realizar cálculos?
a) Porque input() devuelve siempre una cadena de texto. ✅
b) Porque Python no admite variables.
c) Porque print() solo funciona con números.
d) Porque input() devuelve siempre un valor booleano.
Retroalimentación: Para realizar operaciones matemáticas correctamente, debemos convertir las cadenas al tipo de dato adecuado (int o float).
9. Actividad de ampliación
Descubre cómo se solicitan datos al usuario en otros lenguajes
En este capítulo hemos aprendido a utilizar la función input() para que nuestros programas puedan recibir información del usuario.
Sin embargo, cada lenguaje de programación utiliza una instrucción diferente para realizar esta tarea.
Investiga cómo se solicita información al usuario en Java, JavaScript o C# y compárala con Python.
Puedes ayudarte de la documentación oficial de Python o buscar un ejemplo en Internet de alguno de los lenguajes anteriores.
Después responde brevemente a las siguientes preguntas:
- ¿Qué instrucción utiliza el otro lenguaje para leer datos del usuario?
- ¿Te parece más sencilla o más compleja que
input()? ¿Por qué? - Escribe un pequeño programa (aunque no lo entiendas completamente) que solicite el nombre del usuario en ese lenguaje.
Objetivo: descubrir que todos los lenguajes permiten interactuar con el usuario, aunque la sintaxis utilizada sea diferente.