Escribir un programa para gestionar las citas de una consulta médica. La base de datos de citas debe estar en un fichero de nombre citas.csv
. Cada cita contendrá los campos dni
, mes
, dia
, hora
y especialidad
. No es necesario que la primera fila del csv contenga los nombres de los campos. El programa debe incluir las siguientes funciones:
In [1]:
# Ruta del fichero de citas.
fichero = 'citas.csv'
def citas(fichero=fichero):
''' Función que muestra por pantalla el contenido del fichero de citas.
Parámetros:
- fichero: Es una cadena con la ruta del fichero de citas.
'''
try:
# Intentamos abrir el fichero de citas en modo lectura.
f = open(fichero, mode='r')
except FileNotFoundError:
# Si no existe el fichero, controlamos la excepción mostrando por pantalla un mensaje informando de que el fichero no existe.
print('El fichero no existe.')
else:
# Si el fichero existe y se puede abrir mostramos por pantalla una lista con sus líneas (cada línea corresponde a una cita).
print(f.readlines())
# Cerramos el fichero.
f.close()
return
# Apartado 1
def añadir_cita(dni, mes, dia, hora, especialidad, fichero = fichero):
''' Función que añade una cita al fichero de citas.
Parámetros:
- dni: Es una cadena con el dni del paciente.
- mes: Es una cadena con el número de mes.
- dia: Es una cadena con el día.
- hora: Es una cadena con la hora en formato hh:mm.
- especialidad: Es una cadena con la especialidad de la cita.
- fichero: Es una cadena con la ruta del fichero de citas.
'''
try:
# Intentamos abrir el fichero de citas en modo añadir.
f = open(fichero, mode = 'a')
except FileNotFoundError:
# Si no existe el fichero, controlamos la excepción mostrando por pantalla un mensaje informando de que el fichero no existe.
print('El fichero no existe.')
else:
# Si el fichero existe y se puede abrir añadimos al final del fichero una línea con la concatenación del dni, el mes, el día, la hora y la especialidad separados por comas.
f.write(dni + ',' + mes + ',' + dia + ',' + hora + ',' + especialidad + '\n')
# Cerramos el fichero.
f.close()
return
# Ejemplo
añadir_cita('01234567', '02', '05', '10:30', 'Cardiología')
añadir_cita('12345678', '04', '18', '12:00', 'Ginecología')
añadir_cita('01234567', '06', '20', '16:30', 'Cardiología')
añadir_cita('12345678', '03', '16', '9:30', 'Dermatología')
citas()
In [3]:
# Apartado 2
def buscar_citas(dni, fichero = fichero):
''' Función que busca las citas de un paciente en el fichero de citas.
Parámetros:
- dni: Es una cadena con el dni del paciente.
- fichero: Es una cadena con la ruta del fichero de citas.
Devuelve: Una lista con las citas del paciente con el dni dado.
'''
try:
# Intentamos abrir el fichero de citas en modo lectura.
f = open(fichero, mode = 'r')
except FileNotFoundError:
# Si no existe el fichero, controlamos la excepción mostrando por pantalla un mensaje informando de que el fichero no existe.
print('El fichero no existe.')
return
else:
# Si el fichero existe y se puede abrir, leemos todas las líneas y las guardamos en una lista. Cada línea corresponde a una cita.
citas = f.readlines()
# Cerramos el fichero.
f.close()
# Filtramos la lista de citas para quedarnos con las del dni dado y devolvemos la lista filtrada. Para ello dividimos cada línea usando como separador de campos la coma y accedemos a la primera posición de la lista generada para obtener el dni de la cita.
return [cita for cita in citas if cita.split(',')[0] == dni]
# Ejemplo
print(buscar_citas('12345678'))
In [4]:
# Apartado 3
def eliminar_citas(mes, dia, fichero = fichero):
''' Función que elimina del fichero de citas las citas anteriores a una fecha dada.
Parámetros:
- mes: Es una cadena con el número de mes.
- dia: Es una cadena con el día.
- fichero: Es una cadena con la ruta del fichero de citas.
'''
try:
# Intentamos abrir el fichero de citas en modo lectura.
f = open(fichero, mode = 'r')
except FileNotFoundError:
# Si no existe el fichero, controlamos la excepción mostrando por pantalla un mensaje informando de que el fichero no existe.
print('El fichero no existe.')
else:
# Si el fichero existe y se puede abrir, leemos todas las líneas y las guardamos en una lista. Cada línea corresponde a una cita.
citas = f.readlines()
# Cerramos el fichero.
f.close()
# Abrimos de nuevo el fichero en modo escritura (se elimina sus contenido).
f = open(fichero, mode='w')
# Bucle para recorrer las citas
for cita in citas:
# Dividimos la línea de cada cita usando como separador de campos la coma y concatenamos el segundo y tercer elementos de la lista resultantes que corresponden al mes y el día.
fecha = ''.join(cita.split(',')[1:3])
# Condicional para ver si la fecha de la cita es posteror a la fecha indicada.
if fecha >= mes + dia:
# Si la cita tiene una fecha posterior a la fecha indicada la escribimos en una nueva línea del fichero.
f.write(cita)
# Cerramos el fichero.
f.close()
return
# Ejemplo
eliminar_citas('04', '01')
citas()