Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
`` `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")
PREREQ_TREE =PREQUISITETEE ()
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"])
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.