Python 2

publicité
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()
Téléchargement