Ejercicio 1 (Evaluación de 2 parcial)
Crear un codigo que le permita a una persona realizar operaciones en su cuenta bancaria.
No te asustes que la consigna va a estar bien definida para que puedas hacerlo en poco
tiempo.
Primero vas a crear una clase llamada Persona, y Persona va a tener solo dos atributos:
nombre y apellido. Luego, vas a crear una segunda clase llamada Cliente, y Cliente va a
heredar de Persona, porque los clientes son personas, por lo que el Cliente va a heredar
entonces los atributos de Persona, pero tambien va a tener atributos propios, como numero
de cuenta y balance, es decir, el
saldo que tiene en su cuenta bancaria.
Pero eso no es todo: Cliente tambien va a tener tres metodos. El primero va a ser uno de los
metodos especiales y es el que permite que podamos imprimir a nuestro cliente. Este
metodo va a permitir que cuando el codigo pida imprimir Cliente, se muestren todos sus
datos, incluyendo el balance de su cuenta. Luego, un metodo llamado Depositar, que le va a
permitir decidir cuanto dinero quiere agregar a su cuenta. Y finalmente, un tercer metodo
llamado Retirar, que le permita decidir cuanto dinero quiere sacar de su cuenta.
Una vez que hayas creado estas dos clases, tienes que crear el codigo para que tu programa
se desarrolle, pidiendole al usuario que elija si quiere hacer depositos o retiros. El usuario
puede hacer tantas operaciones como quiera hasta que decida salir del programa. Por lo
tanto, nuestro codigo tiene que ir llevando la cuenta de cuanto dinero hay en el balance, y
debes procurar, por supuesto, que el cliente nunca pueda retirar mas dinero del que posee.
Esto no esta permitido.
Recuerda que ahora que sabes crear clases y objetos que son estables y que retienen
informacion, no necesitas crear funciones que devuelvan el balance, ya que la instancia de
cliente puede saber constantemente cual es su saldo debido a que puede hacer sus
operaciones llamando directamente a este atributo y no a una variable separada.
Para que tu programa funcione, puedes organizar tu codigo como quieras, hay muchas
formas de hacerlo, pero mi recomendacion es que basicamente, luego de crear las dos
clases que te he mencionado, crees dos funciones una que se encarguen de crear al cliente
pidiendole al usuario toda la informacion necesaria y devolviendo, a traves del return, un
objeto cliente ya creado.
La otra funcion (que puede llamarse inicio, o algo por el estilo), es la funcion que organiza la
ejecucion de todo el codigo: primero llama a la funcion “crear cliente” y luego se encarga de
mantener al usuario en un loop que le pregunte todo el tiempo si quiere depositar, retirar o
salir del programa y demostrarle el balance, cada vez que haga una modificacion.
Para que este programa no se te haga super largo o complejo, te propongo que esta vez no
nos fijemos tanto en los controles, para ver si el usuario ha puesto opciones permitidas o
no, si ha puesto numeros o no, si ha puesto mayusculas o minusculas, y creemos el codigo
confiando en que el usuario va a ingresar siempre informacion apropiada.
___________________________________________________________________________
1
Ejercicio 2 (Evaluación del 3 parcial)
El desafio de hoy, es que crees un software que funcione como el turnero de una farmacia.
En nuestro caso, vas a crear el tunero para una farmacia que tiene tres areas de atencion:
perfumeria, farmacia (que es donde venden los medicamentos), y cosmeticos. Tu programa
le tiene que preguntar al cliente a cual de las areas desea dirigirse, y le va a dar un numero
de turno segun a que area se dirija. Por ejemplo, si elige cosmetica le va a dar el numero
C-54 (“C” de cosmetica).
Luego de eso, nos va a preguntar si queremos sacar otro turno. Esto, en realidad, es para
simular si viene un nuevo cliente. Y repetira todo el proceso.
Algunas cosas a tener en cuenta: Los diferentes clientes van a ir sacando turnos para
diferentes areas (perfumeria, farmacia, cosmetica), en diferentes ordenes, por lo que el
sistema debe llevar la cuenta de cuantos turnos ha dado para cada una de esas areas, y
producir el siguiente numero de cada area a medida que se lo pida. No te parece genial
aprovechar la eficiencia de los generadores para poder hacer esto?
Por otro lado, el mensaje donde le comunicamos el numero de espera al cliente, deberia
tener algo de texto adicional antes y despues del numero. Por ejemplo, “su turno es (-el
numero de turno con el del comienzo-)”, y luego algo asi como “aguarde y sera atendido”.
Para que nuestro codigo no se repita, en vez de poner ese texto en cada una de las
funciones que calculen los numeros, podemos aprovechar la flexibilidad de los decoradores
para crear ese texto adicional una sola vez, y luego envolver a cualquiera de nuestras
funciones con ese texto unico.
Finalmente, deberias aprovechar que ahora ya sabes dividir tu programa en diferentes
modulos, y entonces separar el codigo en dos partes: por un lado, un modulo que se puede
llamar números.py, en el que vas a escribir todos los generadores y el decorador, y un
segundo modulo que podemos llamar principal.py, donde vas a escribir las funciones que
administran el uncionamiento del programa (como las instrucciones para elegir un area y
para decidir si seguira tomando nuevos turnos o si va a finalizar el programa). Recuerda que
vas a necesitar importar el contenido de numeros.py dentro de principal.py para poder
disponer de sus funciones.