glendaqm / Llbean_data_science

Programa Analista de Datos
0 stars 0 forks source link

Pregunta sobre tarea 5 #3

Closed glendaqm closed 5 years ago

glendaqm commented 5 years ago

Hola Profe,

Tengo una duda con respecto a la tarea 5. Para la solución estoy creando una clase paciente, donde le pongo en el init todos los atributos de un paciente (ced, nombre, apellido, etc) y tambien le agrego dos funciones ademas de la de init, para agregar nuevos medicamentos a la lista de medicamentos de la persona y lo mismo para la lista de enfermedades. Puede ver el codigo que ya subi aqui de tarea_5.py

La cosa es que para generar el reporte de enfermedades tratadas hice una función que recibe la lista de pacientes (que es una lista de elementos tipo paciente) y luego recorre la lista para retornar una lista con las enfermedades para luego imprimirla en pantalla.

Preguntas:

  1. Es necesario inicializar la lista a retornar con []?
  2. cuando ejecuto el codigo abajo, creo una variable de tipo paciente para guardarle el valor de i, para despues poder acceder al atributo listaEnfermedades del objeto, pero al convertir i en tipo paciente, me pide que le pase los valores de los atributos como si estuviese creando un objeto nuevo, lo cual no es lo que quiero, sino que el contenido de i en ese momento me lo guarde en pacienteTemp, para despues acceder al atributo listaEnfermedades de ese objeto.

hubiese querido hacer algo como enfermedades.append(i.listaEnfermedades) pero no me reconoce i como un tipo paciente y por eso estaba usando paciente() para convertirlo, como haria con un str().

Deberia sacar del init los attributos para que no siempre los pida?

def repEnfTratadas(listaPacientes):

enfermedades = []
for i in listaPacientes:
    pacienteTemp = paciente(i)
    enfermedades.append(pacienteTemp.listaEnfermedades)
return enfermedades

Error:

C:\Users\crgq\AppData\Local\Continuum\anaconda3\python.exe C:/Users/crgq/PycharmProjects/Llbean_data_science/tarea_5/tarea_5.py Traceback (most recent call last): File "C:/Users/crgq/PycharmProjects/Llbean_data_science/tarea_5/tarea_5.py", line 108, in print('Reporte Enfermedades Tratadas: ', repEnfTratadas(listaPacientes1)) File "C:/Users/crgq/PycharmProjects/Llbean_data_science/tarea_5/tarea_5.py", line 66, in repEnfTratadas pacienteTemp = paciente(i) TypeError: init() missing 4 required positional arguments: 'nombre', 'ape', 'tel', and 'dir'

Process finished with exit code 1

ericksc commented 5 years ago

Hola buenas,

  1. generalmente para agregar elementos a una lista. el objecto a la cual se le estaría agregando elementos definitivamete debe ser una lista. Inicialmente vacia, en ese caso es util el []

  2. Creo que te estas complicando. En el caso de código mostrado: no veo necesario cual un paciente temporal ->> en teoria el i es un paciente , no ?

glendaqm commented 5 years ago
  1. ok gracias!
  2. Claro! totalmente deacuerdo, de hecho lo hice así al principio, pero me daba error. De hecho cuando se pone el i. no salen los atributos y funciones en la lista de opciones a escojer... sin embargo, lo codifiqué así y funcionó! Gracias!!!!

def repEnfTratadas(listaPacientes):

pregunta: inicializar en [] es necesario?

enfermedades = []
for i in listaPacientes:
    enfermedades.append(i.listaEnfermedades)
return enfermedades