From f0a0a0837ad285e226a898962cb46353e60afa72 Mon Sep 17 00:00:00 2001 From: Takanuva Date: Fri, 9 Mar 2012 22:39:12 +0100 Subject: [PATCH] Nouvelle tentative --- __pycache__/book.cpython-32.pyc | Bin 0 -> 4532 bytes __pycache__/config.cpython-32.pyc | Bin 0 -> 266 bytes __pycache__/dev.cpython-32.pyc | Bin 0 -> 7210 bytes __pycache__/divers.cpython-32.pyc | Bin 0 -> 582 bytes __pycache__/lecon.cpython-32.pyc | Bin 0 -> 12982 bytes agreg.py | 243 ++++++++++++++++++++++++++++++ book.py | 134 ++++++++++++++++ config.py | 5 + creationFiches.sh | 44 ++++++ dev.py | 240 +++++++++++++++++++++++++++++ divers.py | 16 ++ lecon.py | 187 +++++++++++++++++++++++ liste_lecon | 82 ++++++++++ new_book.sh | 37 +++++ new_dev.sh | 63 ++++++++ notes | 3 + 16 files changed, 1054 insertions(+) create mode 100644 __pycache__/book.cpython-32.pyc create mode 100644 __pycache__/config.cpython-32.pyc create mode 100644 __pycache__/dev.cpython-32.pyc create mode 100644 __pycache__/divers.cpython-32.pyc create mode 100644 __pycache__/lecon.cpython-32.pyc create mode 100755 agreg.py create mode 100644 book.py create mode 100644 config.py create mode 100644 creationFiches.sh create mode 100755 dev.py create mode 100644 divers.py create mode 100644 lecon.py create mode 100644 liste_lecon create mode 100644 new_book.sh create mode 100644 new_dev.sh create mode 100644 notes diff --git a/__pycache__/book.cpython-32.pyc b/__pycache__/book.cpython-32.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cb49206c5de082290ae31976822931287f30daf8 GIT binary patch literal 4532 zcmchaUvC^q6~(K1#xtIYLxPue)M*b)Gm%m4n;HOop)L5%=p!QnxlD67wtDh!;dW9M-^%C!vla4N?jRMF3(Kj7sut; zo(q%Z6W_)?^3{Q4T=^s$4p=0Q!#uN|-MVZ)FQrLhkEA5Eah?sh!cw!e>HYu@N)mqy zxvhy!T(p(sv7gwiDz|p92<6tDQDH}0Wn8!^%AVx;)6MCzUq*v4bg(-Nxol+ziE4cq z^mH6Bi;IR_!CzMC@5mglsY)0;(S(AF6R3yT2TE&QVNp;7PY3E{OX*){e^I}}BP+Gl z^B*%aUQ*)@A-ebImUesa~{L z+6J{JEz%9N(Q>5KkAkqL4u5y49fsBz8tvM3yS_SUOS|rQyS_U7n|g??u{-Et%Ko=V z%x9BnUQ||yqHBtYIJz{6oqAUqpP79ZA2?eGXY_ZIxl@d4e{45J-!+fvzsCzD`!2PQ zx99zs$eVf`^L&yvEj|75z&5o!eP?W08JB^N%%8I&d$Xp_Pa2eF6b=XM$kWr4MA}TF zqO^j=9H6?ma9Jh9(LO1v*(9@1?Q!Y9hRn!T_fsp>-97$AG#W+|E2iPaovJF_6JOPh z1>?Cj^$ucBT#oZmXkTWoj0Me=__Vs?tN)3Z~+Iai%ImW8ufgHDrqTOcVF z0J6+|Y0^k&w5Ig#D9W%EezO5F+t@yeQgh2}P|!BE&FqP)HhX%}3@h$spThyg=K@MI z3R!w@CSHpmUd5ZZuu)}alu2JgpJ>-b$jEgxo!TtfIdExmuB{DXw82yEiYRu_TP`GM z6Csu4%d07^5Vjz*Q57G2jOUVts@n^$>D6FOe?5>5xxfz@+F{iQi71(1R127t)aN~f zwI&C02oT`@3JNBLM1**NIh^Z_j8Yjv40sYT)lkOW0q5+$Kw|EUb8JY+79|b3Ve+#- z8?0JXM6NQi1wcnO&9RK!(~S$8%-bR)or58unLz}L937J-DQ|ic6wdcKYBsFMnhghC zTF%{8*CHv6O1%!pYfR9?WmWuhsruK@oDWPpY%O#b2znQCs7g_igfg-Fw6l*ybytH` zy#{Pz+RlqcG`u{+!@uXHX5bCHfDDwjgd*W%k)k$f12OA7CviZEDxpXtDBG=l@mCn| zf1?O6&KSxkjIG`bCl1x=2=%7X$eP?6P(8K2B723cirgPvIGyJwP$Trzpy}w1+|dJ! z!v5#f(ZyncNY#AUnPvZd^w=ZO!`yy}Y^_(z01wy+dK{S-Eosnug$GDa`R&;`1#Mb~ z`aqMYK1kc@#tW?w{Z|O^gd>zP*c0udRskvbDj`xVm5@+Z2m?E+Li{Jfb_0R`4c0*U z$6O z&4zyuwKmLA?x3M1hK6)kHuJ+eR3$%ka7Nb_cA7@96`*pQhoYa)3Wq>!fn;i5l~1up zs$+zjQY}t%1cU5vD)Ao)z|88HgD420Y6?5@DDj(hTc04Z}&E_>_;dBn)vxAkWFpzjXXU5GYF{pIn#EZ>iVFvUE4w zDY7VHUHvUaQ^GLK<0vh|@Li_OWhD@_S7zN0Izex__u8G|p><5_WDDuWbu`Xt0W_=;e<+GC(*RL3+Nx5Wb`}m{CP3q4aeBm6F#!^2^6Guf} zRmc?4^z77@?g1*xVBh=r`}Jq{HIx9K%_N^}PVilcdo8lK(;f4&S+K_&zHsN0Ui2nQ zWje3g9h%A_wHWa#TK)C zwY;1Z{2jsfEtj7&Xn>kgKrKKgP$!^MIF}P{(So6>q{cT|*Z0_B_mVC8D=U)nv1?Je z&Pysrx_9&>!@{vl!y8iuYmkB`S|W+2Xo>Vbno6F9A5g`V^R&51?G%N0FAt6eFL%v= fjr3|TJ!`zd!!%X@iE-=JX|lKp`96Fk6Pfq|E}uOI literal 0 HcmV?d00001 diff --git a/__pycache__/dev.cpython-32.pyc b/__pycache__/dev.cpython-32.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9b2ebfc6deda57b4a90a5020bf399033a6cfce8 GIT binary patch literal 7210 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 TvpC>G=e5)P^cN8)0)y-eN>z$M literal 0 HcmV?d00001 diff --git a/__pycache__/lecon.cpython-32.pyc b/__pycache__/lecon.cpython-32.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5d0d26b654751b04a19193428f893acb76573c6 GIT binary patch literal 12982 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 literal 0 HcmV?d00001 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