Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Dejo mi código, como en los anteriores no controlaba si no existe, le agregue un apartado en caso de no haber definido la base de conocimiento.

class BaseDeConocimiento:

    def __init__(self):
        self.hechos = []
        self.reglas = []

    def agregar_hecho(self, hecho):
        self.hechos.append(hecho)

    def agregar_regla(self, condicion1, condicion2, conclusion):
        self.reglas.append((condicion1, condicion2, conclusion))


class SistemaExperto:

    def __init__(self, base):
        self.base = base

    def inferir(self):

        diagnosticos = []

        if self.base.reglas == []:
            return "No hay reglas en la base de conocimiento"

        for condicion1, condicion2, conclusion in self.base.reglas:

            if condicion1 in self.base.hechos and condicion2 in self.base.hechos:

                if conclusion not in self.base.hechos:
                    self.base.hechos.append(conclusion)
                    diagnosticos.append(conclusion)

        return diagnosticos


base = BaseDeConocimiento()

base.agregar_hecho("fiebre_alta")
base.agregar_hecho("tos")
base.agregar_hecho("dificultad_respirar")

base.agregar_regla(
    "fiebre_alta",
    "tos",
    "infeccion_respiratoria"
)

base.agregar_regla(
    "infeccion_respiratoria",
    "dificultad_respirar",
    "neumonia"
)

sistema = SistemaExperto(base)

resultado = sistema.inferir()

print("Diagnóstico final:")

for diagnostico in resultado:
    print("-", diagnostico)
1 respuesta

¡Hola! ¿Cómo estás?

Gracias por compartir con nosotros en el foro. Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue así y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!