TEMA 3. ENTRADA DE DATOS. COMPARADORES (II).

En este tema continuaremos estudiando los condicionales, profundizando en ellos y haciendo nuestro código más realista.

Sección 3.1 Entrada de datos por consola.

Hasta ahora, todos los datos que necesitábamos para hacer los ejercicios los introducíamos en el programa antes de ejecutarlo. Por ejemplo, copiamos el precio y el tamaño de las pizzas desde una tabla. Realmente es muy práctico tener ciertos datos en el código del programa.

Vamos a suponer que ejecutamos el programa al llegar por la mañana y abrir la pizzería. Es de suponer que habrá variables como el precio de las pizzas, los ingredientes, el número de mesas.. que no van a variar durante el día. Sin embargo... ¿Qué piensas sobre el número de clientes que hay sentados en cada mesa? ¿O el número de pizzas en cada pedido?

¿Crees que tiene sentido parar el programa y volver a ejecutarlo con los nuevos datos cada vez?

Vamos a ir mejorando nuestros programas permitiendo introducir datos. Para ello vamos a utilizar la instrucción 'input'. Esta función pide al usuario que introduzca en la consola un número o un texto. Después, ese número o texto podemos almacenarlo en una variable convenientemente. Piensa si realmente es necesario definir previamente la variable.

Vamos con un ejemplo sencillo permitiendo al programa que salude al cliente. Importante: Cuando utilizamos input el notebook está bloqueado hasta que introducido el valor y pulsamos Enter.

In [ ]:
## Ejemplo de programa con introducción de datos durante la ejecución

## En este ejemplo vamos suponer que el cliente va a hacer un pedido. Le vamos a preguntar por su nombre y a saludarlo. 

print("Bienvenido a Pizzería Nazarí ¿Cómo te llamas?") ## Recuerda, print mostraba un texto o variable por pantalla

nombre_cliente = input() ## Con la instrucción input() pedimos la entrada de texto por consola

print("Me alegro de conocerte,",nombre_cliente, "¿Qué pizza quieres?")

Fíjate en el siguiente ejemplo como podemos unir la instrucción 'print' que pregunta por el nombre y la instrucción 'input' :

In [ ]:
## Ejemplo de programa con introducción de datos durante la ejecución

## En este ejemplo vamos suponer que el cliente va a hacer un pedido. Le vamos a preguntar por su nombre y a saludarlo. 

nombre_cliente = input("Bienvenido a Pizzería Nazarí ¿Cómo te llamas?")

print("Me alegro de conocerte,", nombre_cliente, "¿Qué pizza quieres?")

Vamos con otro ejemplo. Es bastante común cuando sales a comer quw tengas que dividir la cuenta entre el número de comensales. Para facilitar la tarea al cliente, podemos hacerno nosotros y mostrarle al cliente cuanto tiene que pagar cada uno bien por pantalla, en un ticket, etc.

Ahora que ya sabemos pedir información por pantalla podemos hacerlo de forma sencilla. Prueba el siguiente ejemplo:

In [ ]:
## Sencillo ejemplo para dividir el importe total de la cuenta entre el número de comensales
## Vamos a suponer que el total de la cuenta es conocido y está almacenado en la variable "total_cuenta"
## Preguntamos el número de comensales mediante input
## Obtenemos el resultado

importe_total=100  ## Importe total a pagar por la mesa

numero_comensales = input("Introduce el número de comensales de la mesa")

importe_por_comensal=importe_total/numero_comensales

print ("Cada comensal tiene que pagar: ",importe_por_comensal)

Como ya te habrás dado cuenta, el ejemplo anterior no funciona. Visualiza el error y piensa...¿Qué puede estar fallando?. Recuerda en el tema 1 cuando hablábamos de los tipos de variables. Por defecto, cuando usamos 'input' el valor que almacenamos es del tipo texto. Esto significa que aunque escribamos un "4" como número de comensales, el programa sólo entiende que has escrito texto. De forma sencilla, es como si intentases dividir 100€ entre "Plátano" o "Pera". ¿No hay solución posible, verdad?

Como comentamos en el primer tema Python no obliga a declarar una variable antes de usarla. Esto nos obliga a tener especial cuidado con el tipo de las variables para evitar errores.

Para solucionar el problema, le vamos a decir a Python que lo que introduzcamos por consola se espera que sea un número entero (recuerda, el número de comensales como vimos en el tema 1 es un número entero. No puede haber fracciones de personas comiendo en la Pizzería. Sería un poco raro.)

Para ello vamos a utilizar el comando int. La instrucción sería:

In [ ]:
## De esta forma le decimos a Python que al crear numero_comensales la cree como entero (int)

numero_comensales = int (input("Introduce el número de comensales de la mesa")) 

¡Manos a la obra! Prueba tú.

Es tu turno, reescribe el programa que calcula el importe a pagar por comensal del ejemplo anterior para que funcione.

In [ ]:
## Sencillo ejemplo para dividir el importe total de la cuenta entre el número de comensales
## Vamos a suponer que el total de la cuenta es conocido y está almacenado en la variable "total_cuenta"
## Preguntamos el número de comensales mediante input
## Obtenemos el resultado

importe_total=100  ## Importe total a pagar por la mesa

## PON TU CÓDIGO AQUÍ ##

Vamos a calcular ahora el importe total de un pedido de un cliente con todo lo aprendido anteriormente. Utilizaremos 'input', 'print' y algunos condicionales. En el siguiente tema mejoraremos este ejercicio utilizando bucles, pero de momento empezaremos poco a poco.

En la siguiente imagen tienes 3 pizzas del menú de nuestra pizzería. Simplemente vamos a preguntar por la pizza que quiere un cliente y cuantas unidades quiere. Ya habrá tiempo para mejorar este ejemplo y hacerlo más realista.