Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.1.4 >>> 4*9 36 >>> print 'bonjour' bonjour >>> >>> C'était ici le 1er contact avec python la commande 4*9 permet au programmeur de dialoguer avec sa machine, mais python ne fait que répéter ce qu'on lui dit de faire SyntaxError: invalid syntax >>> Exercices Traceback (most recent call last): File "<pyshell#4>", line 1, in -toplevelExercices NameError: name 'Exercices' is not defined >>> >>> print 'il a dit "il fait beau aujourd'hui" SyntaxError: invalid syntax >>> ERREUR parce que les < sont en double essayons SyntaxError: invalid syntax >>> print 'il a dit "il fait beau aujourd'hui" SyntaxError: invalid syntax >>> de nouveau une erreur parce que python a compris que le premier guillemet avant la close du double guillement de la phrase était sa fin, sauf que ce même guillemet simple est privé de doublon c'est pourquoi la syntaxe est mauvaise SyntaxError: invalid syntax >>> la solution est la suivante SyntaxError: invalid syntax >>> print 'il a dit "il fait beau aujourd\'hui"' il a dit "il fait beau aujourd'hui" >>> en effet mettre une barre oblique avant le premier guillemet permet à python de prendre en considération hui en tant que mot alors on rajoute le doublon du premier guillemet après le second guillemet pour clôturer la séquence SyntaxError: invalid syntax >>> on peut faire du calcul avec python SyntaxError: invalid syntax >>> 3*7 21 >>> Et il répond 21, donc il connaît ses tables? Pourtant si on fait une division SyntaxError: invalid syntax >>> 7/3 2 >>> Il répond 2 soit il prend en compte les chiffres entiers mais comment faire pour avoir des chiffres à virgule? SyntaxError: invalid syntax >>> 10/3.0 3.3333333333333335 >>> Voilà, en rajoutant .0 à trois on a ordonné a python de nous donner un résultat avec des chiffres flottants. SyntaxError: invalid syntax >>> Celà nous vient à traiter le sujet suivant, à quoi servent les opérations avec python? SyntaxError: invalid syntax >>> Simple à faire des opérations avec les mots et caractères pour se faciliter les choses, car comme le dit si bien nos professeurs un programmeur est paresseux. SyntaxError: invalid syntax >>> print "je vous trouve "+"très "+"sympathique !" je vous trouve très sympathique ! >>> Le + est un string c'est à dire un lien qui permet de mettre un espace entre deux mots ou caractère SyntaxError: invalid syntax >>> multiplier les ! SyntaxError: invalid syntax >>> print "je vous trouve "+"très "*17+"sympathique !" je vous trouve très très très très très très très très très très très très très très très très très sympathique ! >>> print "je vous trouve "+"très "+"sympathique !" KeyboardInterrupt >>> print "je vous trouve "+"très "*17+"sympathique !"*17 je vous trouve très très très très très très très très très très très très très très très très très sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique !sympathique ! >>> Voilà :) il suffit de rajouter *X derrière un caractère entre guillemets pour le multiplier SyntaxError: invalid syntax >>> print "3*5+2 ="+3*5+2 Traceback (most recent call last): File "<pyshell#27>", line 1, in -toplevelprint "3*5+2 ="+3*5+2 TypeError: cannot concatenate 'str' and 'int' objects >>> Le problème dans cette commande? SyntaxError: invalid syntax >>> print "3*5+2 =""+3*5+2" 3*5+2 =+3*5+2 >>> print "3*5+2 = +3*5+23 SyntaxError: EOL while scanning single-quoted string >>> print "3*5+2 ="+"3*5+2" 3*5+2 =3*5+2 >>> Problème résolu: il manquait des guillemets SyntaxError: invalid syntax >>> >>> Les variables avec python SyntaxError: invalid syntax >>> monnom = "Marie Dupont" >>> tonnom = "Pierre Martin" >>> ici on stocke des variables pour que lorsque l'on demande à python SyntaxError: invalid syntax >>> tonnom Traceback (most recent call last): File "<pyshell#37>", line 1, in -topleveltonnom NameError: name 'tonnom' is not defined >>> print tonnom Traceback (most recent call last): File "<pyshell#38>", line 1, in -toplevelprint tonnom NameError: name 'tonnom' is not defined >>> print tonnom >>> print tonnom,monnom >>> print tonnom+monnom Traceback (most recent call last): File "<pyshell#39>", line 1, in -toplevelprint tonnom NameError: name 'tonnom' is not defined >>> print 'tonnom' >>> print 'tonnom','monnom' >>> print 'tonnom'+'monnom' tonnom >>> monnom='Marie Dupont' >>> monnom 'Marie Dupont' >>> tonnom='Pierre Martin' >>> tonnom 'Pierre Martin' >>> De cette façon on voit que python a bien retenu les variables, il ne faut pas oublier les espaces et surtout les guillemets SyntaxError: invalid syntax >>> Mon nom est Marie Dupont et tu t'appelles Pierre Martin. SyntaxError: invalid syntax >>> 'Mon nom est''monnom''et tu t/''appelles''tonnom''.' 'Mon nom estmonnomet tu t/appellestonnom.' >>> 'Mon nom est'monnom'et tu t''appelles'tonnom'.' SyntaxError: invalid syntax >>> monnom 'Marie Dupont' >>> 'Mon nom est'monnom SyntaxError: invalid syntax >>> monnom 'Marie Dupont' >>> 'Mon nom est' monnom 'et tu t''appelles' tonnom '.' SyntaxError: invalid syntax >>> monnom 'Marie Dupont' >>> 'mon nom est monnom' 'mon nom est monnom' >>> 'mon nom est' monnom SyntaxError: invalid syntax >>> 'mon nom est' 'mon nom est' >>> monnom 'Marie Dupont' >>> 'et tu t/''apelles' 'et tu t/apelles' >>> tonnom 'Pierre Martin' >>> '.' '.' >>> KeyboardInterrupt >>> 'mon nom est'monnom'et tu t/''apelles'tonnom. SyntaxError: invalid syntax >>> Là je ne comprend pas l'erreur SyntaxError: invalid syntax >>> >>> lenom = raw_input("Quel est votre nom ?") Quel est votre nom ? Emilie >>> print lenom Emilie >>> Donc j'en conclu ici que python est capable de créer une variable ici lenom lorsque l'on répond à sa question sur la même ligne SyntaxError: invalid syntax >>> >>> print "bonjour",lenom,"!","je m'appelle",monnom,"!",lenom,"est vraiment un très joli nom !" SyntaxError: invalid syntax >>> print "bonjour",lenom,"!","je m'appelle",monnom,"!",lenom,"est vraiment un très joli nom !" SyntaxError: invalid syntax >>> print "bonjour",lenom,"!","je m'appelle",monnom,"!",lenom,"est vraiment un très joli nom !" bonjour Emilie ! je m'appelle Marie Dupont ! Emilie est vraiment un très joli nom ! >>> >>> print "bonjour",''''lenom,''''"!","je m'appelle",''''monnom'''',"!",''''lenom'''',"est vraiment un très joli nom !" SyntaxError: invalid syntax >>> >>> print "bonjour","'",lenom,"'","!","je m'appelle","'",monnom,"'","!","'",lenom,"'","est vraiment un très joli nom !" SyntaxError: invalid syntax >>> print "bonjour",'lenom',"!","je m'appelle",'monnom',"!",'lenom',"est vraiment un très joli nom !" bonjour lenom ! je m'appelle monnom ! lenom est vraiment un très joli nom ! >>> 1 == 27 False SyntaxError: invalid syntax >>> 3*3*3 == 27 True SyntaxError: invalid syntax >>> "Pierre" == "Pierre" True >>> "Marie"=='Marie' True >>> tonnom!="Marie Dupont" True SyntaxError: invalid syntax >>> tonnom!="Marie Dupont" True >>> lenom == monnom False >>> Ici on essaie de démontrer que lenom et monnom sont deux entités différentes SyntaxError: invalid syntax >>> "Marie"<"Pierre" True >>> Mais ça ne n'arrête pas là en effet python peut classer les choses SyntaxError: invalid syntax >>> ci-dessus il a été capable de dire que m est avant p donc il connait l'alphabet SyntaxError: invalid syntax >>> if lenom == "Pierre" SyntaxError: invalid syntax >>> if lenom == "Pierre" : print "Je vous aime bien" print "Bienvenue !" >>> KeyboardInterrupt >>> else : SyntaxError: invalid syntax >>> else: SyntaxError: invalid syntax >>> else:print "Je ne vous connais pas" SyntaxError: invalid syntax >>> print else:"Je ne vous connais pas" SyntaxError: invalid syntax >>> lenom = raw_input("Quel est votre nom ?") Quel est votre nom ?Emilie >>> enom = raw_input("Quel est votre nom ? ") Quel est votre nom ? Emilie >>> if lenom == "Pierre" : print "Je vous aime bien" print "Bienvenue !" IndentationError: expected an indented block (<pyshell#96>, line 2) >>> print "Je vous aime bien" Je vous aime bien >>> print "bienvenue!" bienvenue! >>> else: print "Je ne vous connais pas" SyntaxError: invalid syntax >>> else: SyntaxError: invalid syntax >>> else: print "jen ne vous connais pas" SyntaxError: invalid syntax >>> if lenom == "Pierre" or lenom == "Marie" SyntaxError: invalid syntax >>> KeyboardInterrupt >>> if lenom == "Pierre" or lenom == "Marie" SyntaxError: invalid syntax >>> if lenom == "Pierre" or lenom == "Marie" SyntaxError: invalid syntax >>> enom = raw_input("Quel est votre nom ? ") # on demande comment s'appelle l'utilisateur if lenom =="Pierre" or lenom "Marie": # test s'il s'agit de Pierre ou de Marie si oui print "Je vous aime bien" print "Bienvenue !" else: # si non print "Je ne vous connais pas" Quel est votre nom ? Emilie >>> if lenom == "Pierre" or lenom == "Marie" or lenom == "Alain" or lenom == "Yves" : mesamies=["Alice","Béatrice","Christine","Dorothée", "Eléonore", "Françoise"] >>> print mesamies Traceback (most recent call last): File "<pyshell#111>", line 1, in -toplevelprint mesamies NameError: name 'mesamies' is not defined >>> print mesamies Traceback (most recent call last): File "<pyshell#112>", line 1, in -toplevelprint mesamies NameError: name 'mesamies' is not defined >>> mesamies=["Alice","Béatrice","Christine","Dorothée", "Eléonore", "Françoise"] >>> mesamies ['Alice', 'B\xe9atrice', 'Christine', 'Doroth\xe9e', 'El\xe9onore', 'Fran\xe7oise'] >>> #!/usr/bin/python # -*- coding: utf-8 -*import urllib, re Ouverture et importation d’une page web url = urllib.urlopen("http://www.ilpga.fr/") Ici il s’agit d’une page web que le programme doit ouvrir codehtml = url.read() A cet endroit on ordonne à Python de lire le code html et d’ouvrir la page en une sortie html #print codehtml Ici on finit par ouvrir la page web en sortie html fichier = open("pageweb.html","w") On fait ouvrir un fichier déjà existant texte = re.sub("<.*?>","",codehtml) On réaplique ce qui a déjà été fait en appliquant des chaînes de caratères entières (les guillemets) fichier.write("""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Analyse d'un fichier</title> </head> <body> """) fichier.write(texte) fichier.write(" </body>") Sélection du texte de la page web fichier.close() Fin de commande Cette application permet de sortir en fichier html une page web avec seulement le texte qui est dans le site. SyntaxError: invalid syntax >>> import urllib, re Ouverture et importation d’une page web url = urllib.urlopen("http://www.ilpga.fr/") Ici il s’agit d’une page web que le programme doit ouvrir codehtml = url.read() A cet endroit on ordonne à Python de lire le code html et d’ouvrir la page en une sortie html #print codehtml Ici on finit par ouvrir la page web en sortie html fichier = open("pageweb.html","w") On fait ouvrir un fichier déjà existant texte = re.sub("<.*?>","",codehtml) On réaplique ce qui a déjà été fait en appliquant des chaînes de caratères entières (les guillemets) fichier.write("""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Analyse d'un fichier</title> </head> <body> """) fichier.write(texte) fichier.write(" </body>") Sélection du texte de la page web fichier.close() Fin de commande Cette application permet de sortir en fichier html une page web avec seulement le texte qui est dans le site. Ce programme ci-dessous est un programme familier vu qu'on l'a traité l'année dernière mais sous office. expr = re.compile("\W+",re.U) liste = expr.split(texte) print liste fichier.write("<h2>Le fichier contient "+str(len(liste))+" mots et "+str(len(set(liste)))+" mots différents:</h2>") fichier.write("<div style='border: 2px solid green; width: 80%;margin:auto;padding:2em;background-color:wheat'>") fichier.write("<table style='border: 2px solid green; width: 80%;margin:auto;padding:2em;background-color:wheat'><tr><td>") fichier.write("</td></tr><tr><td>\n".join(sorted(set(liste),key=str.lower))) fichier.write("</td></tr></table> </body>") isteord = sorted(set(liste),key=unicode.lower) fichier.write("<table style='border: 2px solid green; margin:auto;padding:2em;backgroundcolor:wheat'>") fichier.write("<tr><td>"+mot.encode("utf-8")+"</td><td>"+str(freq)+"</td></tr>") for mot,freq in freqliste: fichier.write("<tr><td>"+mot+"</td><td>"+str(freq)+"</td></tr>") fichier.write("</table>") # -*- coding: utf-8 -*import urllib, re for mot,freq in freqliste: # récupération de la page et décodage url = urllib.urlopen("http://ilpga.fr") codehtml = url.read() codehtml=codehtml.decode("iso-8859-1") # nettoyage des balises et d'autres travaux sur les mots : texte = re.sub("<.*?>","",codehtml) expr = re.compile("\W+",re.U) liste = expr.split(texte) print liste mots = set(liste) # mots = sorted(mots ,key=unicode.lower) # préparer la sortie (encoder en utf-8, ...) texte=texte.encode("utf-8") lesmots=" ".join(liste).encode("utf-8") # écire l'entête et sortir le contenu dans le fichier cible fichier = open("pageweb.html","w") fichier.write("""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset="utf-8" /> <title>Analyse d'un fichier</title> </head> <body> """) fichier.write("<h2>Le fichier contient "+str(len(liste))+" mots:</h2>") fichier.write("<h2>Le fichier contient "+str(len(mots))+" mots différents:</h2>") fichier.write("<div style='border: 2px solid green; width: 80%;margin:auto;padding:2em;background-color:wheat'>") fichier.write("<table style='border: 2px solid green; width: 80%;margin:auto;padding:2em;background-color:wheat'><tr><td>") fichier.write(u"</td></tr><tr><td>\n".join(mots).encode("utf-8")) fichier.write("</td></tr></table> </body>") # Avec re.findall("<a href=.*>(.*)</a>?",codehtml), le contenu récupéré n'est pas un lien, # car ce que l'ont demande au programme, c'est de garder ce qui se trouve ENTRE les balise <a href=...> et </a>, # ceci n'étant que le texte pointant vers un lien. Par exemple, si on a sur la page le texte "ILPGA" qui est un lien vers le site # de l'ILPGA, notre code ici ne prendre que le texte "ILPGA", car on lui aura demandé ce qui se trouve # entre "<a href="http://ilpga.fr">" et le "</a>" qui ferme le lien. # # Pour que le programme nous prenne aussi l'adresse du site vers lequel pointe le lien, # il faudrait mettre : re.findall('<a href="(.*)">?',codehtml) # Dans ce cas, le programme n'aurait pris que ce qu'il y a entre les guillemets de la balise <a href>, # autrement dit l'adresse de la page vers laquelle envoie le lien. # on peut maintenant fermer la balise html "<body>" que l'on utilise depuis tout à l'heure, # notre travail étant terminé dans ce code. fichier.write("</div> </body>") # on doit pour finir permet ce fichier avec la fonction "close". fichier.close()