Vous êtes sur la page 1sur 17

Python pour tous

Exploration des données à l'aide de Python 3


Dr Charles R. indemnité de départ
Charities 1

Pourquoi devriez-vous apprendre à écrire des programmes ?


L'écriture de programmes (ou programmation) est une activité très créative et
enrichissante. Vous pouvez écrire des programmes pour de nombreuses raisons, allant de
gagner votre vie à la résolution d'un problème d'analyse de données difficile, en passant par le
plaisir d'aider quelqu'un d'autre à résoudre un problème. Ce livre part du principe que tout le
monde doit savoir programmer, et qu'une fois que vous saurez programmer, vous comprendrez
ce que vous voulez faire avec vos nouvelles compétences.
Nous sommes entourés dans notre vie quotidienne d'ordinateurs allant des ordinateurs portables
aux téléphones portables. Nous pouvons considérer ces ordinateurs comme nos « assistants
personnels » qui peuvent s'occuper de beaucoup de choses en notre nom. Le matériel de nos
ordinateurs actuels est essentiellement conçu pour nous poser en permanence la question :
« Que voudriez-vous que je fasse ensuite ? »

Agenda electronique personnel


Les programmeurs ajoutent un système d'exploitation et un ensemble d'applications au matériel
et nous nous retrouvons avec un assistant numérique personnel très utile et capable de nous
aider à faire beaucoup de choses différentes.
Nos ordinateurs sont rapides et ont de grandes quantités de mémoire et pourraient nous être très
utiles si nous connaissions seulement la langue à parler pour expliquer à l'ordinateur ce que nous
aimerions qu'il « fasse ensuite ». Si nous connaissions ce langage, nous pourrions dire à
l'ordinateur d'effectuer des tâches répétitives à notre place. Fait intéressant, le genre de choses
que les ordinateurs peuvent faire le mieux sont souvent le genre de choses que nous, les
humains, trouvons ennuyeuses et abrutissantes.
Par exemple, regardez les trois premiers paragraphes de ce chapitre et dites-moi le mot le plus
couramment utilisé et combien de fois le mot est utilisé. Alors que vous étiez capable de lire et de
comprendre les mots en quelques secondes, les compter est presque douloureux car ce n'est
pas le genre de problème que l'esprit humain est conçu pour résoudre. Pour un ordinateur, c'est
l'inverse qui est vrai, lire et comprendre du texte sur une feuille de papier est difficile à faire pour
un ordinateur, mais compter les mots et vous dire combien de fois le mot le plus utilisé a été
utilisé est très facile pour l'ordinateur :

python words.py
Enter file:words.txt
to 16

Notre « assistant d'analyse des informations personnelles » nous a rapidement indiqué que le
mot « à » était utilisé seize fois dans les trois premiers paragraphes de ce chapitre.
Ce fait même que les ordinateurs sont bons à des choses que les humains ne sont pas est la
raison pour laquelle vous devez devenir habile à parler « langage informatique ». Une fois que
vous avez appris cette nouvelle langue, vous pouvez déléguer des tâches banales à votre
partenaire (l'ordinateur), ce qui vous laisse plus de temps pour faire les choses qui vous
conviennent le mieux. Vous apportez créativité, intuition et inventivité à ce partenariat.

Créativité et motivation
Bien que ce livre ne soit pas destiné aux programmeurs professionnels, la programmation
professionnelle peut être un travail très gratifiant à la fois financièrement et
personnellement. Construire des programmes utiles, élégants et intelligents pour les autres est
une activité très créative. Votre ordinateur ou assistant numérique personnel (PDA) contient
généralement de nombreux programmes différents provenant de nombreux groupes de
programmeurs différents, chacun rivalisant pour votre attention et votre intérêt. Ils font de leur
mieux pour répondre à vos besoins et vous offrir une excellente expérience utilisateur dans le
processus. Dans certaines situations, lorsque vous choisissez un logiciel, les programmeurs sont
directement rémunérés à cause de votre choix.
Si nous considérons les programmes comme le résultat créatif de groupes de programmeurs, la
figure suivante est peut-être une version plus judicieuse de notre PDA :

Les programmeurs vous parlent


Pour l'instant, notre principale motivation n'est pas de gagner de l'argent ou de plaire aux
utilisateurs finaux, mais plutôt d'être plus productifs dans le traitement des données et des
informations que nous rencontrerons dans notre vie. Lors de votre premier démarrage, vous
serez à la fois le programmeur et l'utilisateur final de vos programmes. Au fur et à mesure que
vous acquérez des compétences en tant que programmeur et que la programmation vous
semble plus créative, vos pensées peuvent se tourner vers le développement de programmes
pour d'autres.

Architecture matérielle informatique


Avant de commencer à apprendre la langue que nous parlons pour donner des instructions aux
ordinateurs pour développer des logiciels, nous devons en apprendre un peu sur la façon dont
les ordinateurs sont construits. Si vous deviez démonter votre ordinateur ou votre téléphone
portable et regarder au fond de vous, vous trouveriez les pièces suivantes :

Architecture matérielle
Les définitions de haut niveau de ces parties sont les suivantes :
 L' unité centrale de traitement (ou CPU) est la partie de l'ordinateur qui est conçue pour
être obsédée par « et ensuite ? » Si votre ordinateur est évalué à 3,0 Gigahertz, cela
signifie que le processeur demandera « Et ensuite ? » trois milliards de fois par
seconde. Vous allez devoir apprendre à parler rapidement pour suivre le CPU.
 La mémoire principale est utilisée pour stocker les informations dont le processeur a
besoin rapidement. La mémoire principale est presque aussi rapide que le CPU. Mais les
informations stockées dans la mémoire principale disparaissent lorsque l'ordinateur est
éteint.
 La mémoire secondaire est également utilisée pour stocker des informations, mais elle
est beaucoup plus lente que la mémoire principale. L'avantage de la mémoire secondaire
est qu'elle peut stocker des informations même lorsque l'ordinateur n'est pas
alimenté. Des exemples de mémoire secondaire sont les lecteurs de disque ou la
mémoire flash (généralement trouvés dans les clés USB et les lecteurs de musique
portables).
 Les périphériques d'entrée et de sortie sont simplement notre écran, clavier, souris,
microphone, haut-parleur, pavé tactile, etc. Ce sont tous les moyens par lesquels nous
interagissons avec l'ordinateur.
 De nos jours, la plupart des ordinateurs disposent également d'une connexion
réseau pour récupérer des informations sur un réseau. Nous pouvons considérer le
réseau comme un endroit très lent pour stocker et récupérer des données qui ne sont pas
toujours « actives ». Donc, dans un sens, le réseau est une forme de mémoire
secondaire plus lente et parfois peu fiable .
Bien que la plupart des détails du fonctionnement de ces composants soient laissés aux
constructeurs d'ordinateurs, il est utile d'avoir une certaine terminologie afin que nous puissions
parler de ces différentes parties pendant que nous écrivons nos programmes.
En tant que programmeur, votre travail consiste à utiliser et à orchestrer chacune de ces
ressources pour résoudre le problème dont vous avez besoin pour résoudre et analyser les
données que vous obtenez de la solution. En tant que programmeur, vous allez principalement
« parler » au processeur et lui dire quoi faire ensuite. Parfois, vous direz au CPU d'utiliser la
mémoire principale, la mémoire secondaire, le réseau ou les périphériques d'entrée/sortie.

Où es-tu?
Vous devez être la personne qui répond au « Et ensuite ? » du CPU question. Mais il serait très
inconfortable de vous réduire à 5 mm de haut et de vous insérer dans l'ordinateur juste pour que
vous puissiez émettre une commande trois milliards de fois par seconde. Au lieu de cela, vous
devez écrire vos instructions à l'avance. Nous appelons ces instructions stockées
un programme et l'acte d'écrire ces instructions et d'obtenir que les instructions soient
une programmation correcte .

Comprendre la programmation
Dans la suite de ce livre, nous essaierons de faire de vous une personne compétente dans l'art
de la programmation. En fin de compte, vous serez un programmeur - peut-être pas un
programmeur professionnel, mais au moins vous aurez les compétences nécessaires pour
examiner un problème d'analyse de données/d'informations et développer un programme pour
résoudre le problème.
En un sens, vous avez besoin de deux compétences pour être programmeur :
 Tout d'abord, vous devez connaître le langage de programmation (Python) - vous devez
connaître le vocabulaire et la grammaire. Il faut savoir épeler correctement les mots dans
cette nouvelle langue et savoir construire des « phrases » bien formées dans cette
nouvelle langue.
 Deuxièmement, vous devez « raconter une histoire ». En écrivant une histoire, vous
combinez des mots et des phrases pour transmettre une idée au lecteur. Il y a une
compétence et un art dans la construction de l'histoire, et la compétence dans l'écriture
de l'histoire est améliorée en écrivant et en obtenant des commentaires. En
programmation, notre programme est « l'histoire » et le problème que vous essayez de
résoudre est « l'idée ».
Une fois que vous aurez appris un langage de programmation tel que Python, il vous sera
beaucoup plus facile d'apprendre un deuxième langage de programmation tel que JavaScript ou
C++. Le nouveau langage de programmation a un vocabulaire et une grammaire très différents,
mais les compétences en résolution de problèmes seront les mêmes dans tous les langages de
programmation.
Vous apprendrez assez rapidement le « vocabulaire » et les « phrases » de Python. Il vous
faudra plus de temps pour être capable d'écrire un programme cohérent pour résoudre un tout
nouveau problème. Nous enseignons la programmation comme nous enseignons l'écriture. Nous
commençons à lire et à expliquer des programmes, puis nous écrivons des programmes simples,
puis nous écrivons des programmes de plus en plus complexes au fil du temps. À un moment
donné, vous « obtenez votre muse » et voyez les modèles par vous-même et pouvez voir plus
naturellement comment prendre un problème et écrire un programme qui résout ce problème. Et
une fois arrivé à ce point, la programmation devient un processus très agréable et créatif.
Nous commençons par le vocabulaire et la structure des programmes Python. Soyez patient car
les exemples simples vous rappellent quand vous avez commencé à lire pour la première fois.

Mots et phrases
Contrairement aux langages humains, le vocabulaire Python est en fait assez petit. Nous
appelons ce « vocabulaire » les « mots réservés ». Ce sont des mots qui ont une signification
très particulière pour Python. Lorsque Python voit ces mots dans un programme Python, ils ont
un et un seul sens pour Python. Plus tard, au fur et à mesure que vous écrivez des programmes,
vous créerez vos propres mots qui ont un sens pour vous, appelés variables . Vous aurez une
grande latitude pour choisir vos noms pour vos variables, mais vous ne pouvez utiliser aucun des
mots réservés de Python comme nom pour une variable.
Lorsque nous dressons un chien, nous utilisons des mots spéciaux comme « s'asseoir »,
« rester » et « aller chercher ». Lorsque vous parlez à un chien et que vous n'utilisez aucun des
mots réservés, il vous regarde simplement d'un air interrogateur jusqu'à ce que vous prononciez
un mot réservé. Par exemple, si vous dites : « J'aimerais que plus de gens marchent pour
améliorer leur santé globale », ce que la plupart des chiens entendent probablement est : « blah
bla bla marche bla bla bla bla ». C'est parce que « marcher » est un mot réservé dans le langage
canin. Beaucoup pourraient suggérer que le langage entre les humains et les chats n'a pas de
mots réservés 1 .
Les mots réservés dans le langage où les humains parlent à Python sont les suivants :

and del global not with


as elif if or yield
assert else import pass
break except in raise
class finally is return
continue for lambda try
def from nonlocal while

C'est tout, et contrairement à un chien, Python est déjà complètement entraîné. Lorsque vous
dites « essayez », Python essaiera à chaque fois que vous le dites sans faute.
Nous apprendrons ces mots réservés et comment ils sont utilisés en temps utile, mais pour
l'instant, nous nous concentrerons sur l'équivalent Python de « parler » (en langage humain-
chien). L'avantage de dire à Python de parler, c'est que nous pouvons même lui dire quoi dire en
lui donnant un message entre guillemets :

print('Hello world!')

Et nous avons même écrit notre première phrase Python syntaxiquement correcte. Notre phrase
commence par la fonction print suivie d'une chaîne de texte de notre choix entourée de
guillemets simples. Les chaînes des instructions print sont entre guillemets. Les guillemets
simples et les guillemets doubles font la même chose ; la plupart des gens utilisent des
guillemets simples, sauf dans des cas comme celui-ci où un guillemet simple (qui est également
une apostrophe) apparaît dans la chaîne.
Conversation avec Python
Maintenant que nous avons un mot et une phrase simple que nous connaissons en Python, nous
devons savoir comment démarrer une conversation avec Python pour tester nos nouvelles
compétences linguistiques.
Avant de pouvoir converser avec Python, vous devez d'abord installer le logiciel Python sur votre
ordinateur et apprendre à démarrer Python sur votre ordinateur. C'est trop de détails pour ce
chapitre, je vous suggère donc de consulter www.py4e.com où j'ai des instructions détaillées et
des screencasts de configuration et de démarrage de Python sur les systèmes Macintosh et
Windows. À un moment donné, vous serez dans un terminal ou une fenêtre de commande et
vous taperez python et l'interpréteur Python commencera à s'exécuter en mode interactif et
apparaîtra un peu comme suit :

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25)


[MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more
information.
>>>

L' >>>invite est la façon dont l'interpréteur Python vous demande : « Que voulez-vous que je
fasse ensuite ? » Python est prêt à avoir une conversation avec vous. Tout ce que vous devez
savoir, c'est comment parler le langage Python.
Disons par exemple que vous ne connaissiez même pas les mots ou les phrases les plus simples
du langage Python. Vous pouvez utiliser la ligne standard que les astronautes utilisent lorsqu'ils
atterrissent sur une planète lointaine et essayer de parler avec les habitants de la planète :

>>> I come in peace, please take me to your leader


File "<stdin>", line 1
I come in peace, please take me to your leader
^
SyntaxError: invalid syntax
>>>

Cela ne va pas si bien. À moins que vous ne pensiez à quelque chose rapidement, les habitants
de la planète sont susceptibles de vous poignarder avec leurs lances, de vous mettre à la
broche, de vous faire rôtir sur un feu et de vous manger pour le dîner.
Heureusement, vous avez apporté une copie de ce livre lors de vos voyages, et vous vous
rendez sur cette page et essayez à nouveau :

>>> print('Hello world!')


Hello world!

Cela a l'air beaucoup mieux, alors vous essayez de communiquer un peu plus :

>>> print('You must be the legendary god that comes from the sky')
You must be the legendary god that comes from the sky
>>> print('We have been waiting for you for a long time')
We have been waiting for you for a long time
>>> print('Our legend says you will be very tasty with mustard')
Our legend says you will be very tasty with mustard
>>> print 'We will have a feast tonight unless you say
File "<stdin>", line 1
print 'We will have a feast tonight unless you say
^
SyntaxError: Missing parentheses in call to 'print'
>>>

La conversation se passait si bien pendant un moment, puis vous avez commis la moindre erreur
en utilisant le langage Python et Python a ramené les lances.
À ce stade, vous devez également réaliser que si Python est incroyablement complexe et
puissant et très pointilleux sur la syntaxe que vous utilisez pour communiquer avec lui, Python
n'est pas intelligent. Vous êtes vraiment en train d'avoir une conversation avec vous-même, mais
en utilisant la syntaxe appropriée.
Dans un sens, lorsque vous utilisez un programme écrit par quelqu'un d'autre, la conversation est
entre vous et ces autres programmeurs avec Python agissant comme intermédiaire. Python est
un moyen pour les créateurs de programmes d'exprimer comment la conversation est censée se
dérouler. Et dans quelques chapitres supplémentaires, vous serez l'un de ces programmeurs
utilisant Python pour parler aux utilisateurs de votre programme.
Avant de quitter notre première conversation avec l'interpréteur Python, vous devriez
probablement connaître la bonne façon de dire « au revoir » lorsque vous interagissez avec les
habitants de la planète Python :

>>> good-bye
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'good' is not defined
>>> if you don't mind, I need to leave
File "<stdin>", line 1
if you don't mind, I need to leave
^
SyntaxError: invalid syntax
>>> quit()

Vous remarquerez que l'erreur est différente pour les deux premières tentatives incorrectes. La
deuxième erreur est différente car if est un mot réservé et Python a vu le mot réservé et a pensé
que nous essayions de dire quelque chose mais que la syntaxe de la phrase était erronée.
La bonne façon de dire « au revoir » à Python est d'entrer quit() à l' >>>invite interactive du
chevron . Il vous aurait probablement fallu un certain temps pour deviner celui-là, donc avoir un
livre à portée de main s'avérera probablement utile.
Terminologie : Interprète et compilateur
Python is a high-level language intended to be relatively straightforward for humans
to read and write and for computers to read and process. Other high-level languages
include Java, C++, PHP, Ruby, Basic, Perl, JavaScript, and many more. The actual
hardware inside the Central Processing Unit (CPU) does not understand any of these
high-level languages.
The CPU understands a language we call machine language. Machine language is
very simple and frankly very tiresome to write because it is represented all in zeros
and ones:

001010001110100100101010000001111
11100110000011101010010101101101
...

Machine language seems quite simple on the surface, given that there are only zeros
and ones, but its syntax is even more complex and far more intricate than Python. So
very few programmers ever write machine language. Instead we build various
translators to allow programmers to write in high-level languages like Python or
JavaScript and these translators convert the programs to machine language for
actual execution by the CPU.
Since machine language is tied to the computer hardware, machine language is
not portable across different types of hardware. Programs written in high-level
languages can be moved between different computers by using a different interpreter
on the new machine or recompiling the code to create a machine language version of
the program for the new machine.
Ces traducteurs de langage de programmation se répartissent en deux catégories générales : (1)
les interprètes et (2) les compilateurs.
Un interpréteur lit le code source du programme tel qu'il est écrit par le programmeur, analyse le
code source et interprète les instructions à la volée. Python est un interpréteur et lorsque nous
exécutons Python de manière interactive, nous pouvons taper une ligne de Python (une phrase)
et Python la traite immédiatement et est prêt à ce que nous tapions une autre ligne de Python.
Certaines lignes de Python indiquent à Python que vous souhaitez qu'il se souvienne d'une
valeur pour plus tard. Nous devons choisir un nom pour que cette valeur soit mémorisée et nous
pouvons utiliser ce nom symbolique pour récupérer la valeur plus tard. Nous utilisons le
terme variable pour désigner les étiquettes que nous utilisons pour désigner ces données
stockées.

>>> x = 6
>>> print(x)
6
>>> y = x * 7
>>> print(y)
42
>>>
Dans cet exemple, nous demandons à Python de se souvenir de la valeur six et d'utiliser
l'étiquette x afin de pouvoir récupérer la valeur plus tard. Nous vérifions que Python s'est bien
souvenu de la valeur en utilisant print . Ensuite, nous demandons à Python de récupérer x et de
le multiplier par sept et de mettre la valeur nouvellement calculée dans y . Ensuite, nous
demandons à Python d'afficher la valeur actuellement dans y .
Même si nous tapons ces commandes dans Python une ligne à la fois, Python les traite comme
une séquence ordonnée d'instructions avec des instructions ultérieures capables de récupérer
les données créées dans les instructions précédentes. Nous écrivons notre premier paragraphe
simple avec quatre phrases dans un ordre logique et significatif.
C'est la nature d'un interprète d'être capable d'avoir une conversation interactive comme indiqué
ci-dessus. Un compilateur doit recevoir l'intégralité du programme dans un fichier, puis il exécute
un processus pour traduire le code source de haut niveau en langage machine, puis le
compilateur place le langage machine résultant dans un fichier pour une exécution ultérieure.
Si vous avez un système Windows, ces programmes exécutables en langage machine ont
souvent le suffixe « .exe » ou « .dll » qui signifie respectivement « exécutable » et « bibliothèque
de liens dynamiques ». Sous Linux et Macintosh, il n'y a pas de suffixe qui marque de manière
unique un fichier comme exécutable.
Si vous deviez ouvrir un fichier exécutable dans un éditeur de texte, cela aurait l'air
complètement fou et serait illisible :

^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@\xa0\x82
^D^H4^@^@^@\x90^]^@^@^@^@^@^@4^@ ^@^G^@(^@$^@!^@^F^@
^@^@4^@^@^@4\x80^D^H4\x80^D^H\xe0^@^@^@\xe0^@^@^@^E
^@^@^@^D^@^@^@^C^@^@^@^T^A^@^@^T\x81^D^H^T\x81^D^H^S
^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A\^D^HQVhT\x83^D^H\xe8
....

It is not easy to read or write machine language, so it is nice that we


have interpreters and compilers that allow us to write in high-level languages like
Python or C.
Now at this point in our discussion of compilers and interpreters, you should be
wondering a bit about the Python interpreter itself. What language is it written in? Is it
written in a compiled language? When we type “python”, what exactly is happening?
The Python interpreter is written in a high-level language called “C”. You can look at
the actual source code for the Python interpreter by going to www.python.org and
working your way to their source code. So Python is a program itself and it is
compiled into machine code. When you installed Python on your computer (or the
vendor installed it), you copied a machine-code copy of the translated Python
program onto your system. In Windows, the executable machine code for Python
itself is likely in a file with a name like:

C:\Python35\python.exe

That is more than you really need to know to be a Python programmer, but
sometimes it pays to answer those little nagging questions right at the beginning.
Writing a program
Typing commands into the Python interpreter is a great way to experiment with
Python’s features, but it is not recommended for solving more complex problems.
When we want to write a program, we use a text editor to write the Python
instructions into a file, which is called a script. By convention, Python scripts have
names that end with .py.
To execute the script, you have to tell the Python interpreter the name of the file. In a
command window, you would type python hello.py as follows:

$ cat hello.py
print('Hello world!')
$ python hello.py
Hello world!

The “$” is the operating system prompt, and the “cat hello.py” is showing us that the
file “hello.py” has a one-line Python program to print a string.
We call the Python interpreter and tell it to read its source code from the file “hello.py”
instead of prompting us for lines of Python code interactively.
Vous remarquerez qu'il n'était pas nécessaire d'avoir quit() à la fin du programme Python dans le
fichier. Lorsque Python lit votre code source à partir d'un fichier, il sait s'arrêter lorsqu'il atteint la
fin du fichier.

Qu'est-ce qu'un programme ?


La définition d'un programme dans sa forme la plus basique est une séquence d'instructions
Python qui ont été conçues pour faire quelque chose. Même notre simple script hello.py est un
programme. C'est un programme d'une ligne et n'est pas particulièrement utile, mais dans la
définition la plus stricte, c'est un programme Python.
Il peut être plus facile de comprendre ce qu'est un programme en pensant à un problème qu'un
programme pourrait être conçu pour résoudre, puis en regardant un programme qui résoudrait ce
problème.
Disons que vous effectuez des recherches en informatique sociale sur des publications
Facebook et que vous êtes intéressé par le mot le plus fréquemment utilisé dans une série de
publications. Vous pouvez imprimer le flux de publications Facebook et parcourir le texte à la
recherche du mot le plus courant, mais cela prendrait beaucoup de temps et serait très sujet aux
erreurs. Vous seriez intelligent d'écrire un programme Python pour gérer la tâche rapidement et
avec précision afin que vous puissiez passer le week-end à faire quelque chose d'amusant.
Par exemple, regardez le texte suivant sur un clown et une voiture. Regardez le texte et trouvez
le mot le plus courant et combien de fois il apparaît.

the clown ran after the car and the car ran into the tent
and the tent fell down on the clown and the car

Imaginez ensuite que vous effectuez cette tâche en regardant des millions de lignes de
texte. Franchement, il serait plus rapide pour vous d'apprendre Python et d'écrire un programme
Python pour compter les mots que de scanner manuellement les mots.
La meilleure nouvelle est que j'ai déjà mis au point un programme simple pour trouver le mot le
plus courant dans un fichier texte. Je l'ai écrit, testé et maintenant je vous le donne pour que vous
puissiez gagner du temps.

name = input('Enter file:')


handle = open(name, 'r')
counts = dict()

for line in handle:


words = line.split()
for word in words:
counts[word] = counts.get(word, 0) + 1

bigcount = None
bigword = None
for word, count in list(counts.items()):
if bigcount is None or count > bigcount:
bigword = word
bigcount = count

print(bigword, bigcount)

# Code: http://www.py4e.com/code3/words.py

Vous n'avez même pas besoin de connaître Python pour utiliser ce programme. Vous devrez
parcourir le chapitre 10 de ce livre pour bien comprendre les formidables techniques Python qui
ont été utilisées pour créer le programme. Vous êtes l'utilisateur final, vous utilisez simplement le
programme et vous vous émerveillez de son ingéniosité et de la façon dont il vous a épargné tant
d'efforts manuels. Vous tapez simplement le code dans un fichier appelé words.py et l'exécutez
ou vous téléchargez le code source à partir de http://www.py4e.com/code3/ et l'exécutez.
C'est un bon exemple de la façon dont Python et le langage Python agissent comme un
intermédiaire entre vous (l'utilisateur final) et moi (le programmeur). Python est un moyen pour
nous d'échanger des séquences d'instructions utiles (c'est-à-dire des programmes) dans un
langage commun qui peut être utilisé par toute personne qui installe Python sur son
ordinateur. Donc, aucun de nous ne parle à Python , à la place, nous communiquons entre
nous via Python.

Les éléments constitutifs des programmes


Dans les prochains chapitres, nous en apprendrons davantage sur le vocabulaire, la structure
des phrases, la structure des paragraphes et la structure des histoires de Python. Nous
découvrirons les puissantes capacités de Python et comment composer ces capacités ensemble
pour créer des programmes utiles.
Il existe des modèles conceptuels de bas niveau que nous utilisons pour construire des
programmes. Ces constructions ne sont pas uniquement destinées aux programmes Python,
elles font partie de chaque langage de programmation, du langage machine aux langages de
haut niveau.
saisir

Obtenez des données du « monde extérieur ». Cela peut être la lecture de données à
partir d'un fichier, ou même d'un type de capteur comme un microphone ou un
GPS. Dans nos programmes initiaux, notre entrée viendra de l'utilisateur qui tape des
données sur le clavier.

sortir

Affichez les résultats du programme sur un écran ou stockez-les dans un fichier ou peut-
être écrivez-les sur un appareil comme un haut-parleur pour jouer de la musique ou
parler du texte.

exécution séquentielle

Exécutez les instructions les unes après les autres dans l'ordre où elles sont rencontrées
dans le script.

exécution conditionnelle

Vérifiez certaines conditions, puis exécutez ou ignorez une séquence d'instructions.

exécution répétée

Exécutez un ensemble d'instructions à plusieurs reprises, généralement avec quelques


variations.

réutilisation

Écrivez une fois un ensemble d'instructions et donnez-leur un nom, puis réutilisez ces
instructions au besoin tout au long de votre programme.

Cela semble presque trop simple pour être vrai, et bien sûr, ce n'est jamais aussi simple. C'est
comme dire que marcher, c'est simplement « mettre un pied devant l'autre ». L'« art » d'écrire un
programme consiste à composer et à tisser ces éléments de base plusieurs fois pour produire
quelque chose qui soit utile à ses utilisateurs.
Le programme de comptage de mots ci-dessus utilise directement tous ces modèles sauf un.

Qu'est ce qui pourrait aller mal?


Comme nous l'avons vu lors de nos premières conversations avec Python, nous devons
communiquer très précisément lorsque nous écrivons du code Python. Le plus petit écart ou
erreur fera que Python abandonnera l'examen de votre programme.
Les programmeurs débutants considèrent souvent que Python ne laisse aucune place aux
erreurs comme preuve que Python est méchant, haineux et cruel. Alors que Python semble aimer
tout le monde, Python les connaît personnellement et leur en veut. À cause de cette rancune,
Python prend nos programmes parfaitement écrits et les rejette comme « inaptes » juste pour
nous tourmenter.

>>> primt 'Hello world!'


File "<stdin>", line 1
primt 'Hello world!'
^
SyntaxError: invalid syntax
>>> primt ('Hello world')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'primt' is not defined

>>> I hate you Python!


File "<stdin>", line 1
I hate you Python!
^
SyntaxError: invalid syntax
>>> if you come out of there, I would teach you a lesson
File "<stdin>", line 1
if you come out of there, I would teach you a lesson
^
SyntaxError: invalid syntax
>>>

Il y a peu à gagner à discuter avec Python. C'est juste un outil. Il n'a pas d'émotions et il est
heureux et prêt à vous servir quand vous en avez besoin. Ses messages d'erreur semblent durs,
mais ils ne sont que l'appel à l'aide de Python. Il a examiné ce que vous avez tapé et il ne peut
tout simplement pas comprendre ce que vous avez entré.

Python is much more like a dog, loving you unconditionally, having a few key words
that it understands, looking you with a sweet look on its face ( >>>), and waiting for
you to say something it understands. When Python says “SyntaxError: invalid
syntax”, it is simply wagging its tail and saying, “You seemed to say something but I
just don’t understand what you meant, but please keep talking to me ( >>>).”
As your programs become increasingly sophisticated, you will encounter three
general types of errors:
Syntax errors

These are the first errors you will make and the easiest to fix. A syntax error means that
you have violated the “grammar” rules of Python. Python does its best to point right at the
line and character where it noticed it was confused. The only tricky bit of syntax errors is
that sometimes the mistake that needs fixing is actually earlier in the program than where
Python noticed it was confused. So the line and character that Python indicates in a
syntax error may just be a starting point for your investigation.

Logic errors

A logic error is when your program has good syntax but there is a mistake in the order of
the statements or perhaps a mistake in how the statements relate to one another. A good
example of a logic error might be, “take a drink from your water bottle, put it in your
backpack, walk to the library, and then put the top back on the bottle.”
Semantic errors

A semantic error is when your description of the steps to take is syntactically perfect and
in the right order, but there is simply a mistake in the program. The program is perfectly
correct but it does not do what you intended for it to do. A simple example would be if you
were giving a person directions to a restaurant and said, “…when you reach the
intersection with the gas station, turn left and go one mile and the restaurant is a red
building on your left.” Your friend is very late and calls you to tell you that they are on a
farm and walking around behind a barn, with no sign of a restaurant. Then you say “did
you turn left or right at the gas station?” and they say, “I followed your directions perfectly,
I have them written down, it says turn left and go one mile at the gas station.” Then you
say, “I am very sorry, because while my instructions were syntactically correct, they sadly
contained a small but undetected semantic error.”.

Again in all three types of errors, Python is merely trying its hardest to do exactly
what you have asked.

Debugging
When Python spits out an error or even when it gives you a result that is different
from what you had intended, then begins the hunt for the cause of the error.
Debugging is the process of finding the cause of the error in your code. When you
are debugging a program, and especially if you are working on a hard bug, there are
four things to try:
reading

Examine your code, read it back to yourself, and check that it says what you meant to
say.

running

Experiment by making changes and running different versions. Often if you display the
right thing at the right place in the program, the problem becomes obvious, but sometimes
you have to spend some time to build scaffolding.

ruminating

Take some time to think! What kind of error is it: syntax, runtime, semantic? What
information can you get from the error messages, or from the output of the program?
What kind of error could cause the problem you’re seeing? What did you change last,
before the problem appeared?

retreating

At some point, the best thing to do is back off, undoing recent changes, until you get back
to a program that works and that you understand. Then you can start rebuilding.

Beginning programmers sometimes get stuck on one of these activities and forget
the others. Finding a hard bug requires reading, running, ruminating, and sometimes
retreating. If you get stuck on one of these activities, try the others. Each activity
comes with its own failure mode.
Par exemple, la lecture de votre code peut aider si le problème est une erreur typographique,
mais pas s'il s'agit d'un malentendu conceptuel. Si vous ne comprenez pas ce que fait votre
programme, vous pouvez le lire 100 fois et ne jamais voir l'erreur, car l'erreur est dans votre tête.
Exécuter des expériences peut aider, surtout si vous exécutez de petits tests simples. Mais si
vous exécutez des expériences sans réfléchir ou lire votre code, vous pourriez tomber dans un
modèle que j'appelle "programmation aléatoire", qui consiste à effectuer des modifications
aléatoires jusqu'à ce que le programme fasse ce qu'il faut. Inutile de dire que la programmation
de marche aléatoire peut prendre beaucoup de temps.
Il faut prendre le temps de réfléchir. Le débogage est comme une science expérimentale. Vous
devriez avoir au moins une hypothèse sur le problème. S'il y a deux possibilités ou plus, essayez
de penser à un test qui éliminerait l'une d'entre elles.
Faire une pause aide à réfléchir. Parler aussi. Si vous expliquez le problème à quelqu'un d'autre
(ou même à vous-même), vous trouverez parfois la réponse avant d'avoir fini de poser la
question.
Mais même les meilleures techniques de débogage échoueront s'il y a trop d'erreurs ou si le code
que vous essayez de corriger est trop gros et compliqué. Parfois, la meilleure option est de se
retirer, en simplifiant le programme jusqu'à ce que vous arriviez à quelque chose qui fonctionne
et que vous comprenez.
Les programmeurs débutants sont souvent réticents à battre en retraite car ils ne supportent pas
de supprimer une ligne de code (même si c'est faux). Si cela vous rassure, copiez votre
programme dans un autre fichier avant de commencer à le supprimer. Ensuite, vous pouvez
recoller les morceaux petit à petit.

Le parcours d'apprentissage
Au fur et à mesure que vous progressez dans le reste du livre, n'ayez pas peur si les concepts ne
semblent pas bien s'emboîter la première fois. Lorsque vous appreniez à parler, ce n'était pas un
problème pendant vos premières années que vous fassiez de jolis gargouillis. Et ce n'était pas
grave s'il vous fallait six mois pour passer d'un vocabulaire simple à des phrases simples et s'il
vous fallait 5 à 6 ans de plus pour passer des phrases aux paragraphes, et quelques années de
plus pour pouvoir écrire une histoire courte complète et intéressante sur votre posséder.
Nous voulons que vous appreniez Python beaucoup plus rapidement, nous l'enseignons donc
tout en même temps au cours des prochains chapitres. Mais c'est comme apprendre une
nouvelle langue qui prend du temps à assimiler et à comprendre avant que cela ne paraisse
naturel. Cela conduit à une certaine confusion lorsque nous visitons et revisitons des sujets pour
essayer de vous faire voir la situation dans son ensemble pendant que nous définissons les
petits fragments qui composent cette grande image. Bien que le livre soit écrit de manière linéaire
et que si vous suivez un cours, il progressera de manière linéaire, n'hésitez pas à être très non
linéaire dans la façon dont vous abordez la matière. Regardez en avant et en arrière et lisez avec
une touche légère. En parcourant du matériel plus avancé sans en comprendre pleinement les
détails, vous pouvez mieux comprendre le « pourquoi ? » de programmation. En révisant le
matériel précédent et même en refaisant des exercices antérieurs,
Habituellement, lorsque vous apprenez votre premier langage de programmation, il y a quelques
merveilleux "Ah Hah!" des moments où vous pouvez lever les yeux sur un rocher avec un
marteau et un ciseau et vous éloigner et voir que vous construisez en effet une belle sculpture.
Si quelque chose semble particulièrement difficile, il n'y a généralement aucune valeur à rester
éveillé toute la nuit et à le regarder. Faites une pause, faites une sieste, prenez une collation,
expliquez ce qui vous pose problème à quelqu'un (ou peut-être à votre chien), puis revenez-y
avec un regard neuf. Je vous assure qu'une fois que vous aurez appris les concepts de
programmation dans le livre, vous regarderez en arrière et verrez que tout était vraiment simple
et élégant et qu'il vous a simplement fallu un peu de temps pour l'assimiler.

Glossaire
bogue
Une erreur dans un programme.

unité centrale de traitement

Le cœur de tout ordinateur. C'est ce qui fait tourner le logiciel que nous


écrivons ; également appelé « CPU » ou « le processeur ».

compiler

Traduire un programme écrit dans un langage de haut niveau dans un langage de bas
niveau en une seule fois, en vue d'une exécution ultérieure.

langage de haut niveau

Un langage de programmation comme Python qui est conçu pour être facile à lire et à
écrire pour les humains.

mode interactif

Une façon d'utiliser l'interpréteur Python en tapant des commandes et des expressions à
l'invite.

interpréter

Exécuter un programme dans un langage de haut niveau en le traduisant une ligne à la


fois.

langage de bas niveau

Un langage de programmation conçu pour être facile à exécuter par un


ordinateur ; également appelé « code machine » ou « langage assembleur ».

langage machine

Le langage de plus bas niveau pour le logiciel, qui est le langage qui est directement
exécuté par l'unité centrale (CPU).

mémoire principale

Stocke les programmes et les données. La mémoire principale perd ses informations
lorsque l'alimentation est coupée.

analyser

Examiner un programme et analyser la structure syntaxique.

portabilité

Propriété d'un programme qui peut s'exécuter sur plusieurs types d'ordinateurs.

fonction d'impression

Une instruction qui amène l'interpréteur Python à afficher une valeur à l'écran.

résolution de problème

Processus consistant à formuler un problème, à trouver une solution et à exprimer la


solution.

programme

Un ensemble d'instructions qui spécifie un calcul.

rapide
Lorsqu'un programme affiche un message et s'interrompt pour que l'utilisateur tape une
entrée dans le programme.

mémoire secondaire

Stocke les programmes et les données et conserve ses informations même lorsque
l'alimentation est coupée. Généralement plus lent que la mémoire principale. Des
exemples de mémoire secondaire incluent les lecteurs de disque et la mémoire flash
dans les clés USB.

sémantique

Le sens d'un programme.

erreur sémantique

Une erreur dans un programme qui lui fait faire autre chose que ce que le programmeur
avait prévu.

code source

Un programme dans un langage de haut niveau.

Des exercices
Exercice 1 : Quelle est la fonction de la mémoire secondaire dans un ordinateur ?

a) Exécuter tous les calculs et la logique du programme


b) Récupérer des pages Web sur Internet
c) Stocker des informations à long terme, même au-delà d'un cycle d'alimentation
d) Recueillir les informations de l'utilisateur
Exercice 2 : Qu'est-ce qu'un programme ?
Exercice 3 : Quelle est la différence entre un compilateur et un interpréteur ?
Exercice 4 : Lequel des éléments suivants contient un « code machine » ?

a) L'interpréteur Python
b) Le clavier
c) Le fichier source Python
d) Un document de traitement de texte
Exercice 5 : Quel est le problème avec le code suivant :

>>> primt 'Hello world!'


File "<stdin>", line 1
primt 'Hello world!'
^
SyntaxError: invalid syntax
>>>

Exercice 6 : Où dans l'ordinateur une variable telle que « x » est-elle stockée après la fin
de la ligne Python suivante ?

x = 123
a) Unité centrale
b) Mémoire principale
c) Mémoire secondaire
d) Périphériques d'entrée
e) Périphériques de sortie
Exercice 7 : Que va imprimer le programme suivant :

x = 43
x = x + 1
print(x)

a) 43
b) 44
c) x + 1
d) Erreur car x = x + 1 n'est pas mathématiquement possible
Exercice 8 : Expliquez chacun des éléments suivants à l'aide d'un exemple de capacité
humaine : (1) unité centrale de traitement, (2) mémoire principale, (3) mémoire secondaire,
(4) périphérique d'entrée et (5) périphérique de sortie. Par exemple, « Quel est l'équivalent
humain d'une unité centrale de traitement » ?
Exercice 9 : Comment corriger une « erreur de syntaxe » ?

Vous aimerez peut-être aussi