188 lines
11 KiB
Python
188 lines
11 KiB
Python
|
#! /usr/bin/env python
|
||
|
|
||
|
|
||
|
import xml.dom.minidom as md
|
||
|
import os
|
||
|
|
||
|
import config
|
||
|
|
||
|
dico_nom_lecon = { '101' : "Groupe opérant sur un ensemble. Exemples et applications." , '103' : "Exemples et applications des notions de sous-groupe distingué et de groupes quotient." , '104' : "Groupes finis. Exemples et applications." , '105' : "Groupe des permutations d'un ensemble fini. Applications." , '106' : "Groupe linéaire d'un espace vectoriel de dimension finie E, sous-groupes de GL(E). Applications" , '107' : "Représentations et caractères des groupes finis sur un espace vectoriel complexe" , '108' : "Exemples de parties génératrices d'un groupe. Applications." , '109' : "Anneau Z/nZ. Applications." , '110' : "Nombres premiers. Applications." , '111' : "Anneaux principaux. Applications" , '112' : "Corps finis. Applications." , '113' : "Groupe des nombres complexes de module 1. Sous-groupes des racines de l'unité. Applications." , '114' : "Anneau des séries formelles. Applications" , '116' : "Polynômes irréductibles à une indéterminée. Corps de rupture. Exemples et applications." , '117' : "Algèbre des polynômes à plusieurs inderterminées; aspects théoriques et applications" , '119' : "Exemples d'actions de groupes sur les espaces de matrices" , '120' : "Dimension d'un espace vectoriel (on se limitera au cas de dimension finie). Rang. Exemples et applications." , '123' : "Déterminant. Exemples et applications." , '124' : "Polynôme d'endomorphismes en dimension finie. Applications à la réduction d'un endomorphisme en dimension finie." , '125' : "Sous-espaces stables d'un endomorphisme ou d'une famille d'endomorphisme d'un espace vectoriel de dimension finie. Applications." , '126' : "Endomorphismes diagonalisables en dimension finie" , '127' : "Exponentielle de matrices. Applications." , '128' : "Endomorphismes trigonalisables. Endomorphismes nilpotents." , '130' : "Matrices symétriques réelles, matrices hermitiennes." , '131' : "Formes quadratiques sur un espace vectoriel de dimension finie. Orthogonalité, isotropie. Applications" , '132' : "Formes linéaires et hyperplans en dimension finie. Exemples et applications." , '133' : "Endomorphismes remarquables d'un espace vectoriel euclidien de dimension finie." , '135' : "Isométries d'un espace affine euclidien de dim finie. Formes réduites. Applications en dim 2 et 3." , '136' : "Coniques. Applications." , '137' : "Barycentres dans un espace affine réel de dimension finie, convexité. Applications" , '139' : "Application des nombres complexes à la géométrie" , '140' : "Systèmes linéaires;opérations, aspects algorithmiques et conséquences théoriques" , '141' : "Utilisation des groupes en géométrie." , '144' : "Problèmes d'angles et de distances en dimension 2 ou 3." , '145' : "Méthodes combinatoires, problèmes de dénombrement." , '146' : "Résultant. Applications" , '148' : "Formes quadratiques réelles. Exemples et applications." , '149' : "Représentations des groupes finis de petit cardinal" , '201' : "Espaces de fonctions. Exemples et applications." , '202' : "Exemples de parties denses et applications." , '203' : "Utilisation de la notion de compacité." , '204' : "Connexité. Exemples et applications." , '205' : "Espaces complets. Exemples et applications." , '206' : "Théorèmes de point fixe. Exemples et applications." , '207' : "Prolongement de fonctions. Exemples et applications." , '208' : "Espaces vectoriels normés, applications linéaires continues . Exemples" , '213' : "Espaces de Hilbert, bases hilbertiennes. Exemples et applications." , '214' : "Théorème d'inversion locale, théorème des fonctions implicites. Exemples et applications." , '215' : "Applications différentiables définies sur un ouvert de Rn. Exemples et applications." , '216' : "Etude métrique des courbes. Exemples" , '217' : "Sous-variétés de Rn, exemples" , '218' : "Applications des formules de Taylor." , '219' : "Problèmes d'extremum." , '220' : "Equations différentielles X ' = f(t, X), exemples d'études qualitatives des solutions." , '221' : "Equations différentielles l
|
||
|
|
||
|
|
||
|
# --------------------------------------------------
|
||
|
#
|
||
|
# Classe leçon
|
||
|
#
|
||
|
# --------------------------------------------------
|
||
|
|
||
|
|
||
|
class Lecon():
|
||
|
""" Pour les lecons
|
||
|
"""
|
||
|
|
||
|
def __init__(self, ):
|
||
|
""" Initialisation de la leçon
|
||
|
"""
|
||
|
|
||
|
self.nom = None
|
||
|
self.book=[]
|
||
|
self.dev=[]
|
||
|
|
||
|
def from_file(self, file):
|
||
|
""" Importe les informations depuis un fichier
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
- `file`: fichier au format xml
|
||
|
"""
|
||
|
|
||
|
try:
|
||
|
self.document=md.parse(file)
|
||
|
except:
|
||
|
print("Le fichier ", file , " est inconnu")
|
||
|
else:
|
||
|
self.file = file
|
||
|
|
||
|
# Extraction du nom du developpement
|
||
|
self.num = self.document.getElementsByTagName('lecon')[0].getAttribute("num")
|
||
|
self.nom = self.document.getElementsByTagName('lecon')[0].getAttribute("nom")
|
||
|
|
||
|
# Extraction des devloppements
|
||
|
for dev in self.document.getElementsByTagName('dev'):
|
||
|
self.dev += [dev.getAttribute("nom")]
|
||
|
|
||
|
# des bouquins
|
||
|
for book in self.document.getElementsByTagName('book'):
|
||
|
self.book += [book.getAttribute("nom")]
|
||
|
|
||
|
# print("Dans cette lecon on peut faire les développement ", self.dev, " et on aura de besoin des bouquins ", self.book)
|
||
|
|
||
|
|
||
|
def from_scratch(self, num = '101'):
|
||
|
""" Créé la lecon depuis rien
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
- `num` : numero de la lecon
|
||
|
"""
|
||
|
self.num = str(num)
|
||
|
|
||
|
if self.num in dico_nom_lecon:
|
||
|
self.nom = dico_nom_lecon[self.num]
|
||
|
|
||
|
self.document=md.Document()
|
||
|
racine = self.document.createElement("lecon")
|
||
|
racine.setAttribute("num", self.num)
|
||
|
racine.setAttribute("nom", self.nom)
|
||
|
self.document.appendChild(racine)
|
||
|
|
||
|
else:
|
||
|
print("{num} est un numero de lecon inconnu".format(num = self.num))
|
||
|
|
||
|
# print(self.document.toprettyxml())
|
||
|
|
||
|
def add_book(self, book = ["nom", "auth", "isbn", "pg"] ):
|
||
|
""" Bouquin associé à la lecon
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
- `book`: sous la forme suivante ["nom", "auth", "isbn", "pg"]
|
||
|
"""
|
||
|
self.book += book
|
||
|
|
||
|
element = self.document.createElement("book")
|
||
|
element.setAttribute("nom", book[0])
|
||
|
element.setAttribute("auth", book[1])
|
||
|
element.setAttribute("isbn", book[2])
|
||
|
element.setAttribute("pg", book[3])
|
||
|
|
||
|
racine = self.document.getElementsByTagName('lecon')[0]
|
||
|
racine.appendChild(element)
|
||
|
|
||
|
# print(self.document.toprettyxml())
|
||
|
|
||
|
def add_dev(self, dev = None):
|
||
|
""" developpement associé à la lecon
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
- `dev`: le nom du developpement
|
||
|
"""
|
||
|
self.dev += [dev]
|
||
|
|
||
|
element = self.document.createElement("dev")
|
||
|
|
||
|
element.setAttribute("nom", str(dev))
|
||
|
|
||
|
racine = self.document.getElementsByTagName('lecon')[0]
|
||
|
racine.appendChild(element)
|
||
|
|
||
|
# print(self.document.toprettyxml())
|
||
|
|
||
|
def print_nom(self):
|
||
|
""" Affiche le nom et le numero de la lecon
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
"""
|
||
|
print("{num} : {nom} ".format(num = self.num , nom = self.nom))
|
||
|
|
||
|
def print_nbr_dev(self):
|
||
|
""" Affiche le nombre de développement lié à la lecon
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
"""
|
||
|
print("{nbr} --- {num} : {nom} ".format(num = self.num , nom = self.nom , nbr = len(self.dev)))
|
||
|
|
||
|
|
||
|
def print_dev(self):
|
||
|
""" Affiche les developpements qui lui sont associés
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
"""
|
||
|
print(" \n ---------- Développements de la lecon {num}: {nom} ---------- \n".format(num = self.num , nom = self.nom))
|
||
|
for d in self.dev:
|
||
|
print(d)
|
||
|
|
||
|
|
||
|
def sauve(self, destination = 0):
|
||
|
""" Sauve le developpement à l'endroit indiqué
|
||
|
|
||
|
Arguments:
|
||
|
- `self`:
|
||
|
- `destination`: là où on veut l'enregistrer
|
||
|
"""
|
||
|
if not destination:
|
||
|
nom_mod = self.nom.replace(" ", "_")
|
||
|
nom_mod = nom_mod.replace(".", "")
|
||
|
destination = "{num}-{nom}.agregLecon".format(num = self.num , nom = nom_mod)
|
||
|
|
||
|
fichier = open(destination, 'w')
|
||
|
fichier.write(self.document.toprettyxml())
|
||
|
fichier.close()
|
||
|
print("Le développement à été sauvé dans \"", destination, "\" voila son contenu")
|
||
|
print(self.document.toprettyxml())
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
lecon = Lecon()
|
||
|
# lecon.from_file("j'aime_les_maths_et_les_carottes_rappées.agregLecon")
|
||
|
lecon.from_scratch(103)
|
||
|
lecon.add_book(("pipo", "popi", "chipo", "pouet"))
|
||
|
lecon.add_book(("pipoi", "popii", "chipoi", "poueti"))
|
||
|
lecon.add_dev()
|
||
|
lecon.add_dev("Chouette")
|
||
|
lecon.sauve()
|
||
|
|