commit f0a0a0837ad285e226a898962cb46353e60afa72 Author: Takanuva Date: Fri Mar 9 22:39:12 2012 +0100 Nouvelle tentative diff --git a/__pycache__/book.cpython-32.pyc b/__pycache__/book.cpython-32.pyc new file mode 100644 index 0000000..cb49206 Binary files /dev/null and b/__pycache__/book.cpython-32.pyc differ diff --git a/__pycache__/config.cpython-32.pyc b/__pycache__/config.cpython-32.pyc new file mode 100644 index 0000000..44df5e3 Binary files /dev/null and b/__pycache__/config.cpython-32.pyc differ diff --git a/__pycache__/dev.cpython-32.pyc b/__pycache__/dev.cpython-32.pyc new file mode 100644 index 0000000..b9b2ebf Binary files /dev/null and b/__pycache__/dev.cpython-32.pyc differ diff --git a/__pycache__/divers.cpython-32.pyc b/__pycache__/divers.cpython-32.pyc new file mode 100644 index 0000000..8f28ec1 Binary files /dev/null and b/__pycache__/divers.cpython-32.pyc differ diff --git a/__pycache__/lecon.cpython-32.pyc b/__pycache__/lecon.cpython-32.pyc new file mode 100644 index 0000000..d5d0d26 Binary files /dev/null and b/__pycache__/lecon.cpython-32.pyc differ diff --git a/agreg.py b/agreg.py new file mode 100755 index 0000000..efe1eef --- /dev/null +++ b/agreg.py @@ -0,0 +1,243 @@ +#! /usr/bin/env python + +# Mes classes +import lecon +import dev +import book +import divers +import config + +# celles des autres +import glob +from operator import itemgetter +import os +import optparse + + +liste_lecon = ( 101 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 116 , 117 , 119 , 120 , 123 , 124 , 125 , 126 , 127 , 128 , 130 , 131 , 132 , 133 , 135 , 136 , 137 , 139 , 140 , 141 , 144 , 145 , 146 , 148 , 149 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 223 , 224 , 226 , 228 , 229 , 230 , 232 , 234 , 235 , 236 , 238 , 239 , 240 , 241 , 242 , 243 , 245 , 246 , 247 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 256 ) + + +class Agreg(): + """ Gere les bouquins, les developpements et les leçons + """ + + def __init__(self, ): + """ + """ + + self.book = [] + self.dev = [] + + self.init_lecon() + + + def init_lecon(self): + """ Initialise la liste des lecons + + Arguments: + - `self`: + """ + self.lecon = {} + + for num in liste_lecon: + num = str(num) + l = lecon.Lecon() + l.from_scratch(num) + self.lecon[num] = l + +# -------------------- Import et extraction + + def import_dev(self, folder = ""): + """ Import les dev contenus dans folder + + Arguments: + - `self`: + - `folder`: Dossier ou les developpements sont stockés + """ + + # for d in glob.glob(folder + '*.agregDev'): + for d in glob.glob(folder + '*'): + devel = dev.Dev() + devel.from_file(d) + self.dev += [devel] + + + def extract_from_dev(self): + """ Remplit les liste lecon et book à partir des informations contenu dans dev + + Arguments: + - `self`: + """ + for d in self.dev: + + # Extraction des leçons + for l in d.lecon: + self.lecon[l].add_dev(d.nom) + + # # Extraction des bouquins + # for b in d.book: + # self.book Faudra le faire mais j'ai la flemme pour le moment + + + def import_lecon(self, folder = ""): + """ Import les lecons contenus dans folder + + Arguments: + - `self`: + - `folder`: Dossier ou les lecons sont stockés + """ + + for l in glob.glob(folder + '*.agregLecon'): + le = lecon.Lecon() + le.from_file(l) + self.lecon += [le] + + def import_book(self, folder = ""): + """ Import les bouquins contenus dans folder + + Arguments: + - `self`: + - `folder`: Dossier ou les developpements sont stockés + """ + + for b in glob.glob(folder + '*.agregBook'): + bo = book.Book() + bo.from_file(b) + self.book += [bo] + +# -------------------- Analyse + + def nbr_dev(self): + """ Calcul et trie le nombre de developpement par lecon et stock la liste dans lecon_nbr_dev + + Arguments: + - `self`: + """ + self.lecon_nbr_dev = [] + for l in self.lecon.values(): + self.lecon_nbr_dev += [(l.num , len(l.dev))] + + self.lecon_nbr_dev = sorted(self.lecon_nbr_dev, reverse=True, key=itemgetter(1)) + + def score_dev(self): + """ Calcul le score/avancement dans nos lecons + + Arguments: + - `self`: + """ + + # Calcul du nombre de développement effectué (pas plus de 2 par lecon sinon c'est triché!) + score = 0 + for l in self.lecon.values(): + score += min(2, len(l.dev)) + + # Nombre total de développement nécessaire + nbr_dev_tot = 2 * len(self.lecon) + + self.score = score / nbr_dev_tot * 100 + + + +# -------------------- Affichage + + def print_analyse_dev(self): + """ Affiche le nombre de developpement par lecon en ordre décroissant + + Arguments: + - `self`: + """ + # On calcul et trie le nombre de dev + self.nbr_dev() + + for i, n in self.lecon_nbr_dev: + self.lecon[i].print_nbr_dev() + + self.score_dev() + if self.score != 100: + print("\n Courage! Ton score est de {score}% c'est déjà pas mal non?".format(score = self.score)) + else: + print("\n Bien joué! Toutes les lecons au moins deux développements!") + + def print_lecon_from_int(self, num = 101): + """ Écrit le nom des développements en relation avec la leçonà partir du numero de la lecon + + Arguments: + - `self`: + - `num`: le numero d'une lecon + """ + num = str(num) + + if num in self.lecon: + self.lecon[num].print_dev() + else: + print("Leçon inconnue!") + + + def print_lecon_from_name(self, chaine): + """ Écrit le nom des développements en relation avec la leçon à partir d'une partie du nom de la lecon + + Arguments: + - `self`: + - `chaine`: Une partie du nom de la (ou des!) lecons + """ + + for l in [l for l in self.lecon.values() if divers.normalise_str(chaine) in divers.normalise_str(l.nom)]: + l.print_dev() + + + def print_dev(self, chaine): + """ Affiche les informations sur les développements dont le nom contient "chaine" + + Arguments: + - `self`: + - `chaine`: chaine de caracteres à partir duquel on va séléctionner les dév + """ + # Pour chaque nom de dev on selectionne ceux qui contienne la chaine + + for d in [d for d in self.dev if divers.normalise_str(chaine) in divers.normalise_str(d.nom)]: + d.print_info() + + + +if __name__ == '__main__': + # agreg = Agreg() + # agreg.import_dev('/media/documents/Cours/Agreg/developpement/mes_dev/') + # # agreg.analyse_dev() + # # for num in dico_nom_lecon: + # # agreg.print_lecon_dev(num) + # agreg.extract_from_dev() + # # agreg.print_analyse_dev() + # agreg.print_lecon_dev(213) + # agreg.print_lecon_dev(201) + # agreg.print_lecon_dev(234) + # agreg.print_lecon_dev(245) + + # Pour analyser les options qu'on lui demande + parser = optparse.OptionParser() + + # options proposée + parser.add_option("-a","--analyse",action="store_true",dest="analyse", help="Donne le nombre de developpement pour les leçons") + parser.add_option("-l","--lecon",action="store",type="string",dest="lecon", help="Affiche les développements associés à aux lecons qui contiennent la chaine mis en argument.") + parser.add_option("-L","--lecons",action="store",type="string",dest="list_lecons", help="Affiche les développements associés aux lecons mis en argument (Entre guillemets séparé par un espace ou sans rien s'il n'y a qu'une lecon)") + parser.add_option("-d","--dev",action="store",type="string",dest="dev", help="Affiche la liste des developpements et propose d'en selectionner une à décrire") + + + # Digestion + (options, args) = parser.parse_args() + + agreg = Agreg() + agreg.import_dev(config.lieu_dev) + agreg.extract_from_dev() + + if options.analyse: + agreg.print_analyse_dev() + + if options.lecon: + agreg.print_lecon_from_name(options.lecon) + + if options.list_lecons: + for l in options.list_lecons.split(" "): + agreg.print_lecon_from_int(str(l)) + + if options.dev: + agreg.print_dev(options.dev) diff --git a/book.py b/book.py new file mode 100644 index 0000000..c6ce68c --- /dev/null +++ b/book.py @@ -0,0 +1,134 @@ +#! /usr/bin/env python + + +import xml.dom.minidom as md +import os + + +class Book(): + """ Pour les bouquins + """ + + def __init__(self, ): + """ Initialisation du bouquins + """ + self.infos = {"nom":None , "auth":None , "isbn": None} + + self.dev=[] + self.lecon=[] + + 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 des infos sur le bouquin en question + for cle in self.infos.keys(): + self.infos[cle] = self.document.getElementsByTagName('lecon')[0].getAttribute(cle) + + # Extraction des lecons liées + for lecon in self.document.getElementsByTagName('lecon'): + self.lecon += [lecon.getAttribute("num")] + + # Extraction des devloppements + for dev in self.document.getElementsByTagName('dev'): + self.dev += [dev.getAttribute("nom")] # Manque d'extraire la page qui le concerne + + # print("Ce bouquin est utile dans les leçons ", self.lecon, "et pour les développements", self.dev) + + + def from_scratch(self, book = {"nom":None , "auth":None , "isbn": None}): + """ Créé le bouquin depuis rien + + Arguments: + - `self`: + - `book`: sous la forme suivante {"nom":val , "auth": val , "isbn": val } + """ + self.infos = book + + self.document=md.Document() + racine = self.document.createElement("book") + + for cle in self.infos.keys(): + racine.setAttribute(cle, self.infos[cle]) + + self.document.appendChild(racine) + + # print(self.document.toprettyxml()) + + def add_lecon(self, lecon = 0): + """ Ajoute une lecon où apparait ce developpement + + Arguments: + - `self`: + - `lecon`: le numero de la lecon + """ + self.lecon += [lecon] + + element = self.document.createElement("lecon") + element.setAttribute("num", str(lecon)) + + racine = self.document.getElementsByTagName('book')[0] + racine.appendChild(element) + + # print(self.document.toprettyxml()) + + def add_dev(self, dev = None, pg = None): + """ Ajoute une lecon où apparait ce developpement + + Arguments: + - `self`: + - `dev`: le nom du developpement + - `pg`: page ou on peut le retrouver + """ + self.dev += [dev] + + element = self.document.createElement("dev") + + element.setAttribute("nom", str(dev)) + element.setAttribute("pg", str(pg)) + + racine = self.document.getElementsByTagName('book')[0] + racine.appendChild(element) + + # print(self.document.toprettyxml()) + + + def sauve(self, destination = 0): + """ Sauve le developpement à l'endroit indiqué + + Arguments: + - `self`: + - `destination`: là où on veut l'enregistrer + """ + if not destination: + destination = self.infos["nom"].replace(" ", "_") + ".agregBook" + + fichier = open(destination, 'w') + fichier.write(self.document.toprettyxml()) + fichier.close() + print("Le bouquin à été sauvé dans \"" + str(destination) + "\" voila son contenu") + print(self.document.toprettyxml()) + + + + + +if __name__ == '__main__': + book = Book() + # book.from_file("ici") + book.from_scratch( {"nom":"super book" , "auth": "super autheur" , "isbn": "super isbn" }) + book.add_dev("j'aime les maths et les carottes rapées", 76) + book.add_lecon("123") + book.sauve() + diff --git a/config.py b/config.py new file mode 100644 index 0000000..0eac47a --- /dev/null +++ b/config.py @@ -0,0 +1,5 @@ +# Fichier configuration + +lieu_dev = "../developpement/mes_dev/" +lieu_lecon = "../lecons/" +lieu_bouquin = "../Bouquins/" diff --git a/creationFiches.sh b/creationFiches.sh new file mode 100644 index 0000000..c64599c --- /dev/null +++ b/creationFiches.sh @@ -0,0 +1,44 @@ +#!/bin/sh +IFS=" +" + +lieu_fiches="lecons_notes" + + +if [ ! -e $lieu_fiches ] +then + echo "Création du répertoire" + mkdir $lieu_fiches +fi + + +for lecon in `cat liste_lecon`; do + numero=${lecon:0:3} + nom=${lecon:5} # On extrait le nom de la lecon + nom_mod=${nom//./} # On remplace les "." par rien + nom_mod=${nom_mod// /_} # On remplace les espaces par des _ + echo "Création de $lecon" + + fichier="$lieu_fiches/$numero" + + printf " + + + + + + + +" $numero $nom > $fichier + +done \ No newline at end of file diff --git a/dev.py b/dev.py new file mode 100755 index 0000000..8a4e04e --- /dev/null +++ b/dev.py @@ -0,0 +1,240 @@ +#! /usr/bin/env python + + +import xml.dom.minidom as md +import os +import optparse + +import lecon +import config + +# -------------------------------------------------- +# +# Classe des développements +# +# -------------------------------------------------- + + +class Dev(): + """ Pour les développements + """ + + def __init__(self, ): + """ Initialisation du développement + """ + + self.nom = None + self.book=[] + self.lecon=[] + + 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.nom = self.document.getElementsByTagName('dev')[0].getAttribute("nom") + + # des lecons + for lecon in self.document.getElementsByTagName('lecon'): + self.lecon += [lecon.getAttribute("num")] + + # des bouquins + for book in self.document.getElementsByTagName('book'): + self.book += [book.getAttribute("nom") , book.getAttribute("auth") , book.getAttribute("isbn") , book.getAttribute("pg")] + + +# -------------------- Création et ajout d'information sur d'un développement + + def from_scratch(self, nom = "???"): + """ Créé le développement depuis rien + + Arguments: + - `self`: + - `nom` : nom du developpement + """ + self.nom = nom + + self.document=md.Document() + racine = self.document.createElement("dev") + racine.setAttribute("nom", nom) + self.document.appendChild(racine) + + # print(self.document.toprettyxml()) + + def add_book(self, book = ["nom", "auth", "isbn", "pg"] ): + """ Ajoute un bouquin en relation avec ce developpement + + 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('dev')[0] + racine.appendChild(element) + + # print(self.document.toprettyxml()) + + def add_lecon(self, lecon = 0): + """ Ajoute une lecon où apparait ce developpement + + Arguments: + - `self`: + - `lecon`: le numero de la lecon + """ + self.lecon += [lecon] + + element = self.document.createElement("lecon") + element.setAttribute("num", str(lecon)) + + racine = self.document.getElementsByTagName('dev')[0] + racine.appendChild(element) + + # print(self.document.toprettyxml()) + + +# -------------------- Concernant le Prompt + + def from_prompt(self): + """ Créé le développement depuis le prompt + + Arguments: + """ + print("\n ---------- Nouveau développement ---------- ") + + + # On crée l'objet + d = Dev() + + # Nom du developpement + self.prompt_desc_dev() + + bo = 1 + while bo: + self.prompt_add_book() + + print("Un autre bouquin? (vide pour non, n'importe quoi pour oui!)") + bo = input() + + self.prompt_add_lecon() + + print("\n ---------- Voila fini! ----------\n ") + + + def prompt_desc_dev(self): + """ Pour demander la description du developpement + """ + print("Nom du developpement?") + nom = input() + self.from_scratch(nom) + + + def prompt_add_lecon(self): + """ Prompt pour demander la liste des leçons correspondantes + """ + print("\n ---------- Ajout de la liste des developpement ---------- ") + print("Liste des leçons liées? (séparé par un espace)") + list_lecons = input().split(" ") + + for l in list_lecons: + self.add_lecon(l) + + + def prompt_add_book(self): + """ Prompt pour demander les infos sur un bouquin + """ + print("\n ---------- Ajout d'un bouquin ---------- ") + + print("Nom du bouquin") + nom = input() + print("Autheur (tous on va pas s'embeter)") + auth = input() + print("Réference") + ref = input() + print("page") + pg = input() + + self.add_book([nom , auth , ref , pg]) + + +# -------------------- Affichage + + def print_info(self): + """ Affiche les infos sur le dev + + Arguments: + - `self`: + """ + print(" \n ---------- Informations sur :{nom} ".format(nom = self.nom)) + print(" --- Leçons --- ") + for l in self.lecon: + lec = lecon.Lecon() + lec.from_scratch(l) + lec.print_nom() + + # print(" --- Bouquins --- ") + + +# -------------------- Sauvegarde + + def sauve(self, folder = ""): + """ Sauve le developpement à l'endroit indiqué + + Arguments: + - `self`: + - `folder`: là où on veut l'enregistrer (et oui pas le choix du nom!!) + """ + destination = folder + self.nom.replace(" ", "_") + ".agregDev" + + 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__': + # dev = Dev() + # dev.from_file("/media/documents/Cours/Agreg/developpement/mes_dev/Lp_Banach") + # # dev.from_scratch("j'aime les maths et les carottes rappées") + # dev.add_book(("pipo", "popi", "chipo", "pouet")) + # dev.add_book(("pipoi", "popii", "chipoi", "poueti")) + # dev.add_lecon("123") + # dev.add_lecon("128") + # dev.add_lecon("122") + # dev.sauve() + + + # Pour analyser les options qu'on lui demande + parser = optparse.OptionParser() + + # options proposée + parser.add_option("-n","--new",action="store_true",dest="new", help='Pour créer un nouveau développement') + #parser.add_option("-o","--output",action="store",type="string",dest="outputFilename") + + # Digestion + (options, args) = parser.parse_args() + + if options.new: + dev = Dev() + dev.from_prompt() + dev.sauve(config.lieu_dev) diff --git a/divers.py b/divers.py new file mode 100644 index 0000000..e8a2b7d --- /dev/null +++ b/divers.py @@ -0,0 +1,16 @@ +#! /usr/bin/env python +# Ici on met tout ce qui n'a rien à faire ailleurs et qui est trop petit pour avec sa propre place! + + +# ---------------------------------------- +# Pour les chaines de caractères + +import unicodedata + +def normalise_str(chaine): + """ renvoie un chaine ou ù on a enlevé les majuscules et les accents de la chaine + + Arguments: + - `chaine`: + """ + return unicodedata.normalize('NFKD', chaine).encode('ASCII', 'ignore').lower() diff --git a/lecon.py b/lecon.py new file mode 100644 index 0000000..8c0171e --- /dev/null +++ b/lecon.py @@ -0,0 +1,187 @@ +#! /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() + diff --git a/liste_lecon b/liste_lecon new file mode 100644 index 0000000..5892bdd --- /dev/null +++ b/liste_lecon @@ -0,0 +1,82 @@ +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). diff --git a/new_book.sh b/new_book.sh new file mode 100644 index 0000000..869b427 --- /dev/null +++ b/new_book.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +NOM=${*:?"Et le nom?!?!"} +NOM_mod=${NOM// /_} +echo $NOM_mod + +while [ -z $AUTH ]; do + echo "Auteurs? (N'importe quoi si la flemme)" + read AUTH +done + +while [ -z $ISBN ]; do + echo "ISBN? (N'importe quoi si la flemme)" + read ISBN +done + +printf " + + + + + + +" > $NOM_mod + +echo "$NOM_mod a été créé et voici son contenu" +cat $NOM_mod diff --git a/new_dev.sh b/new_dev.sh new file mode 100644 index 0000000..bd6116d --- /dev/null +++ b/new_dev.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +NOM=${*:?"Et le nom?!?!"} +NOM_mod=${NOM// /_} + +echo "Création du developpement $NOM" + +while [ -z $SRC ]; do + echo "Nom d'un bouquin? (Commencez par le premier!)" + read SRC +done + +while [ -z $AUTH ]; do + echo "Son auteur? (Celui du bouquin que vous venez d'entrer)" + read AUTH +done + +while [ -z $PG ]; do + echo "La page où le trouver? (N'importe quoi si la flemme mais c'est pas chouette)" + read PG +done + +while [ -z $LECON ]; do + echo "liste des leçons associés? (suite de numero séparés par un espace)" + read LECON +done + +# En tête du fichier +printf " + + + + + +" >> $NOM_mod + +echo $LECON +for lecon in $LECON; do + printf " +" >> $NOM_mod +done +# Bas du fichier + +printf " + + + + +" >> $NOM_mod + +echo "$NOM_mod a été créé et voici son contenu" +echo "----------------------------------------" +cat $NOM_mod \ No newline at end of file diff --git a/notes b/notes new file mode 100644 index 0000000..82684ca --- /dev/null +++ b/notes @@ -0,0 +1,3 @@ + * Dans Gourdon (et certainement Rouvière) regrader extrema lié + * Verifier dans le Toulouse si test du khi2 passe pour Poisson-Binômiale + * Jeter un coup d'oeil à la méthode du gradiant optimal