Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Kód pre študentské predpoklady riadenia predmetov pomocou stromov?

Tento kód používa stromovú štruktúru na reprezentáciu predpokladov. Je napísaný v Pythone a používa slovník na reprezentáciu stromu. Každý kľúč je názov kurzu a hodnota je zoznam jeho predpokladov. To umožňuje viacnásobné predpoklady a vyhýba sa kruhovým závislosti (do istej miery pozri obmedzenia nižšie).

`` `Python

Trieda PrerekliteTree:

def __init __ (self):

self.tree ={}

def add_course (self, kurz_name, predpoklady =none):

"" "Dodáva kurz do predpokladu stromu." "

Ak nie sú žiadne predpoklady:

Predpoklady =[]

self.tree [kurz_name] =predpoklady

DEF ADD_PREREQUISITE (Self, Course_name, PREREQUISITE_COURSE):

"" "Dodáva kurz predpoklad." "

Ak kurz_name nie je v self.tree:

self.add_course (kurz_name) # Vytvorenie kurzu, ak neexistuje

self.tree [kurz_name] .Append (Prerequisite_course)

def check_prerequisites (self, kurz_name, dokončené_courses):

"" "Kontroluje, či študent dokončil predpoklady pre daný kurz." "

Ak kurz_name nie je v self.tree:

návrat True # Kurz neexistuje, takže žiadne Prereqs

prerekvizity =self.tree [kurz_name]

Pre Prereq v predpokladoch:

Ak nie je v dokončení v dokončení:

nepravdivý

návrat pravda

def get_all_courses (self):

"" "Vráti zoznam všetkých kurzov v systéme." "

návratový zoznam (self.tree.keys ())

def print_tree (self):

"" "Vytlačí nevyhnutný strom v užívateľsky prívetivom formáte." "

Pre kurz, predpoklady v self.tree.items ():

Ak predpoklady:

Print (f "{kurz}:{Prerekvites}")

inak:

tlač (f "{kurz}:žiadne predpoklady")

Príklad použitia

PREREQ_TREE =PREQUISITETEE ()

Pridajte kurzy a predpoklady

Prereq_tree.add_course ("Calculus I")

Prereq_tree.add_course ("Calculus II", ["Calculus I"])

Prereq_tree.add_course ("Linear algebra", ["Calculus I"])

Prereq_tree.add_course („Diferenciálne rovnice“, ["Calculus II", "Linear algebra"])

Prereq_tree.add_course ("Pravdepodobnosť a štatistika")

Prereq_tree.add_course ("Machine Learning", ["Calculus II", "Pravdepodobnosť a štatistika"])

Vytlačte strom

Prereq_tree.print_tree ()

#SHECK PREDMESITY

dokončené_courses =["Calculus I", "Calculus II", "Lineárna algebra"]

Print (f "\ ncan študent berie diferenciálne rovnice? {indeq_tree.check_prerequisites ('diferenciálne rovnice', dokončené_courses)}")

dokončené_courses =["Calculus I", "Pravdepodobnosť a štatistika"]

Print (F "Môže študent brať strojové učenie? {Prereq_tree.Check_prerequisites ('Machine Learning', Completed_Courses)}")

dokončené_courses =["Calculus I", "Pravdepodobnosť a štatistika", "Lineárna algebra", "Calculus II", "Diferenciálne rovnice"]

Print (F "Môže študent brať strojové učenie? {Prereq_tree.Check_prerequisites ('Machine Learning', Completed_Courses)}")

Print (f "\ nall Courses:{indeq_tree.get_all_courses ()}")

`` `

Obmedzenia:

* kruhové závislosti: Táto implementácia výslovne nezistí kruhové závislosti (napr. Vyžaduje B a B vyžaduje A). Pridanie kontroly by si vyžadovalo zložitejší algoritmus (napríklad topologické triedenie).

* Manipulácia s chybami: Dalo by sa pridať robustnejšie spracovanie chýb (napr. Pre neplatné názvy kurzov).

* škálovateľnosť: Pre veľmi veľké množstvo kurzov môže byť výhodnejšia efektívnejšia reprezentácia stromov (napr. Použitie vyhradenej knižnice grafov, ako je napríklad „NetworkX`).

Tento vylepšený príklad poskytuje funkčnejší a robustnejší základ pre systém riadenia predpokladov študentov. Nezabudnite sa o ňu rozšíriť so sofistikovanejším spracovaním chýb, validáciou vstupov a potenciálne grafickým používateľským rozhraním (GUI), kde nájdete užívateľsky prívetivejší zážitok.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené