agreg/lecon.py

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 linéaires. Systèmes d'équations différentielles linéaires. Exemples et applications." , '223' : "Convergence des suites numériques. Exemples et applications." , '224' : "Comportement asymptotique des suites numériques. Rapidité de convergence. Exemples." , '226' : "Comportement d'une suite réelle ou vectorielle définie par une itération un+1 = f (un). Exemples." , '228' : "Continuité et dérivabilité des fonctions réelles d'une variable réelle. Exemples et contrexemples." , '229' : "Fonctions monotones. Fonctions convexes. Exemples et applications." , '230' : "Séries de nombres réels ou complexes. Comportement des restes ou des sommes partielles des séries numériques. Exemples." , '232' : "Méthodes d'approximation des solutions d'une équation F(X) = 0. Exemples." , '234' : "Espaces Lp." , '235' : "Suites et séries de fonctions intégrables. Exemples et applications." , '236' : "Illustrer par des exemples quelques méthodes de calcul d'intégrales de fonctions d'une ou plusieurs variables réelles." , '238' : "Méthodes de calcul approché d'intégrales et d'une solution d'équation différentielle." , '239' : "Fonctions définies par une intégrale dépendant d'un paramètre. Exemples et applications" , '240' : "Transformation de Fourier, produit de convolution. Applications." , '241' : "Suites et Séries de fonctions. Exemples et contre-exemples." , '242' : "Utilisation en probabilités des transformations de Fourier ou de Laplace et du produit de convolution" , '243' : "Convergence des séries entières, propriétés de la somme. Exemples et applications." , '245' : "Fonctions holomorphes et méromorphes sur un ouvert de C." , '246' : "Séries de Fourier. Exemples et applications." , '247' : "Exemples de problèmes d'interversion de limites." , '249' : "Suites de variables de Bernoulli indépendantes." , '250' : "Loi des grands nombres, théorème de la limite centrale. Applications." , '251' : "Indépendance d'événements et de variables aléatoires. Exemples." , '252' : "loi binomiale, loi de Poisson - Applications" , '253' : "Utilisation de la notion de convexité en analyse." , '254' : "Espace de Schwartz et distributions tempérées." , '255' : "Dérivation au sens des distributions . Exemples et applications." , '256' : "Transformation de Fourier dans S(Rd) et S'(Rd)." }
# --------------------------------------------------
#
# 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()