Función input()
Contents
Función input()
#
La función input()
tiene el propósito de recibir un valor desde la consola por un usuario. Esta función es muy útil para recibir datos de entrada sin tener que escribirlos en una variable. Retomemots nuestra función saludar()
y supongamos que el programa lo está usando “Juan”, quien nació en 1980 1.
def saludar(nombre, fecha_nacimiento=1990, lugar_de_nacimiento="Colombia"):
"""Saluda a una persona y le dice su edad.
Parámetros
----------
nombre: str
Nombre de la persona a saludar
fecha_nacimiento: int
Año de nacimiento de la persona
lugar_de_nacimiento: str
Lugar de nacimiento de la persona
"""
edad = 2023 - fecha_nacimiento
print(f"Hola {nombre.title()}, ¿cómo estás? Tienes {edad} años y naciste en {lugar_de_nacimiento.title()}.")
Podemos entonces pedirle su nombre al usuario y saludarlo:
nombre = input("Ingresa tu nombre: ")
saludar(nombre)
Hola Juan, ¿cómo estás? Tienes 33 años y naciste en Colombia.
La función input()
asigna cualquier valor que hayas pasado en la consola como una cadena de caracteres y la asigna a la variable asociada, en este caso nombre
.
Aceptar valores numéricos#
En nuestro ejemplo anterior tuvimos que modificar el parámetro fecha_nacimiento
para que el programa funcionara. Si no lo hubiéramos hecho de esa manera, obtendríamos el siguiente error:
nombre = input("Ingresa tu nombre: ")
fecha_nacimiento = input("Ingresa tu año de nacimiento: ")
saludar(nombre, fecha_nacimiento)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[3], line 4
1 nombre = "Juan"
2 fecha_nacimiento = "1980"
----> 4 saludar(nombre, fecha_nacimiento)
Cell In[1], line 13, in saludar(nombre, fecha_nacimiento, lugar_de_nacimiento)
1 def saludar(nombre, fecha_nacimiento=1990, lugar_de_nacimiento="Colombia"):
2 """Saluda a una persona y le dice su edad.
3
4 Parámetros
(...)
11 Lugar de nacimiento de la persona
12 """
---> 13 edad = 2023 - fecha_nacimiento
14 print(f"Hola {nombre.title()}, ¿cómo estás? Tienes {edad} años y naciste en {lugar_de_nacimiento.title()}.")
TypeError: unsupported operand type(s) for -: 'int' and 'str'
Este error se debe a que la función input()
no recibe otro tipo de valor diferente a un texto. Por ello, para lidiar con esto, debemos convertir el valor que recibimos de la consola a un número entero. Esto lo podemos hacer con la función int()
directamente en el input()
:
nombre = input("Ingresa tu nombre: ")
fecha_nacimiento = int(input("Ingresa tu año de nacimiento: "))
saludar(nombre, fecha_nacimiento)
Hola Juan, ¿cómo estás? Tienes 43 años y naciste en Colombia.
O, podemos hacerlo directamente en la función:
def saludar(nombre, fecha_nacimiento, lugar_de_nacimiento="Colombia"):
"""Saluda a una persona y le dice su edad.
Parámetros
----------
nombre: str
Nombre de la persona a saludar
fecha_nacimiento: int
Año de nacimiento de la persona
lugar_de_nacimiento: str
Lugar de nacimiento de la persona
"""
edad = 2023 - int(fecha_nacimiento) # Convertimos el valor a entero
print(f"Hola {nombre.title()}, ¿cómo estás? Tienes {edad} años y naciste en {lugar_de_nacimiento.title()}.")
nombre = input("Ingresa tu nombre: ")
fecha_nacimiento = input("Ingresa tu año de nacimiento: ")
saludar(nombre, fecha_nacimiento)
Hola Juan, ¿cómo estás? Tienes 43 años y naciste en Colombia.
Así ya no tendremos problemas con el tipo de dato que recibimos de la consola.
Notas#
- 1
Debido a que no contamos con una consola de entrada en este cuaderno, hemos asignado los valores directamente para simular el comportamiento de la función
input()
.