Python Basic
Python Basic
Par Sundeep Agarwal - Laethy (traducteur) - Nothus (traducteur) - Petit Vince (traducteur)
Ce cours est un tutoriel qui se propose de vous apprendre le langage Python à travers des
exemples.
Commentez
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
I - Introduction..............................................................................................................................................................4
I-A - Installation...................................................................................................................................................... 4
I-B - Exemple Hello World..................................................................................................................................... 4
I-C - Exécution du programme Python.................................................................................................................. 5
I-D - Pour plus d’information.................................................................................................................................. 5
I-E - L’interpréteur Python...................................................................................................................................... 6
I-F - Lectures complémentaires............................................................................................................................. 6
I-G - Bibliothèque standard Python........................................................................................................................6
II - Types de données nombre et chaîne de caractères.............................................................................................6
II-A - Les types numériques...................................................................................................................................7
II-A-1 - Lectures complémentaires....................................................................................................................8
II-B - Les chaînes de caractères........................................................................................................................... 8
II-C - Les constantes............................................................................................................................................10
II-D - Les opérateurs intégrés.............................................................................................................................. 10
II-E - Lectures complémentaires.......................................................................................................................... 11
III - Les fonctions....................................................................................................................................................... 11
III-A - Définition d'une fonction.............................................................................................................................11
III-B - Valeur par défaut des arguments.............................................................................................................. 12
III-C - Lectures complémentaires......................................................................................................................... 12
III-D - Fonction print............................................................................................................................................. 13
III-E - Fonction range........................................................................................................................................... 16
III-F - Fonction déterminant le type......................................................................................................................16
III-G - Portée des variables..................................................................................................................................16
III-H - Lectures complémentaires......................................................................................................................... 18
IV - Obtenir une entrée utilisateur............................................................................................................................. 18
IV-A - Entrée d’entiers..........................................................................................................................................18
IV-B - Entrée de décimaux (nombres à virgule flottante).................................................................................... 18
IV-C - Entrée d’une chaîne de caractères........................................................................................................... 19
V - Exécution des commandes externes.................................................................................................................. 19
V-A - Appel de commandes Shell....................................................................................................................... 19
V-B - Appel de commandes Shell avec expansion............................................................................................. 20
V-C - Gérer les commandes de flux sortants et les redirections.........................................................................21
VI - Structures de contrôle........................................................................................................................................ 22
VI-A - Vérification de la condition........................................................................................................................ 22
VI-B - if................................................................................................................................................................. 23
VI-C - if-else comme opérateur de condition.......................................................................................................23
VI-D - for...............................................................................................................................................................24
VI-E - while........................................................................................................................................................... 24
VI-F - continue and break.................................................................................................................................... 24
VII - Les listes............................................................................................................................................................26
VII-A - Assignation des variables de liste............................................................................................................ 26
VII-B - Découpage et modification des listes.......................................................................................................26
VII-C - Copie des listes........................................................................................................................................ 28
VII-D - Méthodes de liste et divers...................................................................................................................... 29
VII-E - Lecture complémentaire........................................................................................................................... 33
VII-F - Les boucles...............................................................................................................................................33
VII-G - Compréhension d’une liste.......................................................................................................................34
VII-H - Lecture complémentaire........................................................................................................................... 35
VII-I - Obtention de la liste comme entrée utilisateur.......................................................................................... 35
VII-J - Obtention d’éléments aléatoires de la liste...............................................................................................35
VIII - Les types de données : séquence, ensemble et dictionnaire.......................................................................... 36
VIII-A - Chaînes....................................................................................................................................................36
VIII-B - Tuples.......................................................................................................................................................38
VIII-C - Ensemble................................................................................................................................................. 39
VIII-D - Dictionnaire.............................................................................................................................................. 40
VIII-E - Lecture supplémentaire........................................................................................................................... 42
IX - Manipulation du texte......................................................................................................................................... 42
IX-A - Méthodes de chaînes................................................................................................................................ 42
-2-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
-3-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
I - Introduction
Selon Wikipédia, Python est un langage de programmation dynamique de haut niveau, polyvalent, interprété et
largement utilisé. Sa philosophie de conception met l'accent sur la lisibilité du code, et sa syntaxe permet aux
programmeurs d’écrire des programmes en moins de lignes de code que ce n’est possible dans des langages tels que
C ++ ou Java. Le langage fournit des concepts permettant d’écrire des programmes clairs à petite et grande échelle.
Le langage de programmation Python a été conçu par Guido van Rossum qui continue de superviser le processus
de développement du langage.
I-A - Installation
Pour installer Python, téléchargez la version de Python compatible à votre système d’exploitation sur le site officiel
de Python.
Python est par défaut installé sur la plupart des distributions Linux.
Vous pouvez consulter ce guide pour plus de détails pour la configuration d’un environnement virtuel et l’utilisation
de pip. Ne jamais utiliser la commande sudo pip à moins d’être certain de ce que vous faites.
Les exemples présentés ici portent sur les systèmes d’exploitation Unix, la version 3 de Python et utilisent le shell
bash.
Voici quelques outils que vous pouvez également utiliser pour exécuter le code Python en ligne :
• pythontutor : cet outil permet l'exécution du code dans les versions Python 2 et 3 et la visualisation du flot de
contrôle des instructions, et fournit des exemples de programmes.
• jupyter : Jupyter est une application web qui vous permet de créer et de partager des documents contenant
du code en ligne, des équations, des aperçus et du texte explicatif.
• ideone : cet outil est un outil de compilation et de débogage en ligne qui vous permet de compiler le code
source et de l'exécuter en ligne dans plus de soixante langages de programmation.
• Python Interpreter shell : permet également d’exécuter de code Python en ligne.
On suppose que vous êtes familier avec les lignes de commande. Sinon, consultez ce tutoriel de base sur
[Link].
#!/usr/bin/python3
print("Hello World")
La troisième ligne affiche le message Hello World avec un saut de ligne ajouté par défaut par la fonction print.
-4-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
Pour écrire votre programme, vous pouvez utiliser un éditeur de texte comme gedit, vim ou tout autre éditeur.
Après avoir enregistré le fichier, attribuez au fichier les droits d'exécution et exécutez le programme à partir d'un
terminal :
1. $ chmod +x hello_world.py
2. $ ./hello_world.py
3. Hello World
$ type python3
python3 is /usr/bin/python3
$ python3 --version
Python 3.4.3
Une erreur courante, pour ceux qui ont travaillé avec un livre ou un tutoriel sur la version 2 de Python ou qui ont
utilisé le langage Perl, est d'oublier les () avec la fonction print :
#!/usr/bin/python3
Selon le type d'erreur, il peut être facile de la repérer en fonction des messages d'erreur imprimés lors de l'exécution
du programme.
$ ./syntax_error.py
File "./syntax_error.py", line 3
print "Have a nice day"
^
SyntaxError: Missing parentheses in call to 'print'
#!/usr/bin/python3
# Greeting message
print("Hello World")
-5-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• L’interpréteur Python est généralement utilisé pour exécuter des extraits de codes Python lorsqu’on apprend
le langage de programmation Python ou à des fins de débogage.
• Généralement, l’invite est : >>>.
• Dans les chapitres suivants de ce cours, certains sujets seront complétés par des exemples utilisant
l'interpréteur Python.
• La variable spéciale _ contient le résultat de la dernière expression imprimée.
• On peut saisir une partie de la commande et appuyer plusieurs fois sur la touche Flèche vers le Haut pour
faire correspondre les commandes de l'historique.
• La combinaison Ctrl + l permet d’effacer l'écran en conservant toutes les commandes saisies.
• Utilisez la commande exit() pour quitter.
1. $ python3
2. Python 3.4.3 (default, Oct 14 2015, 20:28:29)
3. [GCC 4.8.4] on linux
4. Type "help", "copyright", "credits" or "license" for more information.
5. >>> print("hi")
6. hi
7. >>> abc
8. Traceback (most recent call last):
9. File "<stdin>", line 1, in <module>
10. NameError: name 'abc' is not defined
11. >>> num = 5
12. >>> num
13. 5
14. >>> 3 + 4
15. 7
16. >>> 12 + _
17. 19
18. >>> exit()
La bibliothèque contient des modules intégrés (écrits en C) qui fournissent un accès aux fonctionnalités du système
telles que les Entrées / Sorties de fichiers qui seraient autrement inaccessibles aux programmeurs Python, ainsi que
les modules écrits en Python qui fournissent des solutions standardisées pour de nombreux problèmes rencontrés
dans la programmation quotidienne.
Certains de ces modules sont explicitement conçus pour favoriser et améliorer la portabilité des programmes Python
en extrayant les spécificités de la plate-forme dans des API neutres.
• Les nombres
• Les chaînes de caractères
• Les constantes
• Les opérateurs intégrés
-6-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
Le type d’une variable est déterminé automatiquement par Python. Il suffit d’attribuer une valeur à la variable avant
de l'utiliser ailleurs - comme une fonction d'affichage ou une partie de l'expression.
1. >>> num1 = 7
2. >>> num2 = 42
3. >>> total = num1 + num2
4. >>> print(total)
5. 49
6. >>> total
7. 49
8.
9. # Pas de limite à la précision des nombres entiers, uniquement limitée par la mémoire
disponible
10. >>> 34 ** 32
11. 10170102859315411774579628461341138023025901305856
12.
13. # L’utilisation d’une barre oblique simple / produit un résultat à virgule flottante
14. >>> 9 / 5
15. 1.8
16.
17. # L’utilisation de barres obliques doubles // ne donne que la partie entière du résultat sans
arrondi
18. >>> 9 // 5
19. 1
20.
21. >>> 9 % 5
22. 4
1. >>> appx_pi = 22 / 7
2. >>> appx_pi
3. 3.142857142857143
4.
5. >>> area = 42.16
6. >>> appx_pi + area
7. 45.30285714285714
8.
9. >>> num1
10. 7
11. >>> num1 + area
12. 49.16
• Les nombres binaires sont préfixés par 0b ou 0B (c'est-à-dire le chiffre 0 suivi de la lettre majuscule /
minuscule b) ;
• Les nombres en base 8(octal) sont préfixés par 0o ou 0O (c'est-à-dire le chiffre 0 suivi de la lettre majuscule /
minuscule o) ;
• De même, les nombres hexadécimaux sont précédés de 0x ou 0X :
-7-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
Le caractère _ peut être utilisé entre les chiffres pour plus de lisibilité. Cette notion a été introduite dans Python v3.6.
1. >>> 1_000_000
2. 1000000
3. >>> 1_00.3_352
4. 100.3352
5. >>> 0xff_ab1
6. 1047217
7.
8. # La mise en forme f-strings sera expliquée dans un chapitre ultérieur
9. >>> num = 34 ** 32
10. >>> print(f'{num:_}')
11. 10_170_102_859_315_411_774_579_628_461_341_138_023_025_901_305_856
• les chaînes de caractères peuvent être déclarées en utilisant des guillemets simples ou doubles.
• Lorsque la chaîne elle-même contient des guillemets doubles et simples, utilisez \ pour échapper les
guillemets qui font partie de la chaîne.
Les séquences d'échappement comme le caractère de retour à la ligne \n peuvent être utilisées dans la déclaration
d’une chaîne de caractères.
-8-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
3. 'Blue\nRed\nGreen'
4.
5. >>> print(colors)
6. Blue
7. Red
8. Green
Utilisez le préfixe r (r pour raw (brut)) si vous ne voulez pas que les séquences d'échappement soient interprétées.
Ce préfixe est couramment utilisé avec des expressions régulières, lire Correspondance de modèle et extraction
pour avoir des exemples.
• Chaînes de caractères entre triples guillemets. Comme les chaînes de caractères simples, """ ou ''' peuvent
être utilisés ainsi que les caractères d'échappement en utilisant \,
1. #!/usr/bin/python3
2.
3. """
4. Cette ligne fait partie d’un commentaire multiligne
5. Ce programme montre des exemples de chaînes de caractères entre triples guillemets
6. """
7.
8. # attribuer plusieurs chaînes de caractères à la variable
9. poem = """\
10. The woods are lovely, dark and deep,
11. But I have promises to keep,
12. And miles to go before I sleep,
13. And miles to go before I sleep.
14. """
15.
16. print(poem, end='')
Les chaînes de caractères entre triples guillemets sont également utiles pour la documentation du code. Voir le
chapitre Doctrings pour des exemples.
1. $ ./triple_quoted_string.py
2. The woods are lovely, dark and deep,
3. But I have promises to keep,
4. And miles to go before I sleep,
-9-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. >>> bool(2)
2. True
3. >>> bool(0)
4. False
5. >>> bool('')
6. False
7. >>> bool('a')
8. True
• Opérateurs arithmétiques
• + addition
• - soustraction
• * multiplication
• / division (résultat à virgule flottante )
• // division (division entière, le résultat n'est pas arrondi)
• ** exponentiation
• % modulo (reste de la division entière).
• Les opérateurs de chaîne de caractères
• == égal à
• > plus grand que
• < plus petit que
• != différent
• >= supérieur ou égal à
• <= inférieur ou égal à
• logique booléenne
• and et logique
• or ou logique
- 10 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• & et
• | ou
• ^ ou exclusif
• ~ bits inversés
• >> décalage à droite
• << décalage à gauche
Et plus encore…
• Python docs - Numeric types – Liste complète des opérations et des priorités.
• Python docs - String methods
1. #!/usr/bin/python3
2.
3. # ----- Fonction sans argument -----
4. def greeting():
5. print("-----------------------------")
6. print(" Hello World ")
7. print("-----------------------------")
8.
9. greeting()
10.
11. # ----- Fonction avec arguments -----
12. def somme_deux_nombres(num1, num2):
13. total = num1 + num2
14. print("{} + {} = {}".format(num1, num2, total))
15.
16. somme_deux_nombres(3, 4)
17.
18. # ----- Fonction avec une valeur de retour -----
19. def carre(num):
20. return num * num
21.
22. my_num = 3
23. print(carre(2))
24. print(carre(my_num))
• Une erreur de syntaxe courante, est l’oubli de : à la fin de l'instruction de définition d'une fonction.
• Les blocs (corps) des fonctions, structures de contrôle, etc., sont distingués grâce à l'indentation :
1. $ ./[Link]
- 11 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
2. -----------------------------
3. Hello World
4. -----------------------------
5. 3 + 4 = 7
6. 4
7. 9
1. #!/usr/bin/python3
2.
3. # ----- Fonction avec un argument avec une valeur par défaut -----
4. def greeting(style_char='-'):
5. print(style_char * 29)
6. print("Hello World")
7. print(style_char * 29)
8.
9. print("Style par défaut")
10. greeting()
11.
12. print("\ncarctère de style *")
13. greeting('*')
14.
15. print("\ncaractère de style =")
16. greeting(style_char='=')
Les fonctions peuvent fréquemment avoir un comportement par défaut, modifié par le passage d’un argument
pertinent si nécessaire.
1. $ ./functions_default_arg_value.py
2. Style par défaut
3. -----------------------------
4. Hello World
5. -----------------------------
6.
7. Si le style passé est "*"
8. *****************************
9. Hello World
10. *****************************
11.
12. Si le style passé est "="
13. =============================
14. Hello World
15. =============================
• Les triples guillemets de commentaires permettent de décrire l'usage de la fonction et sont généralement
repris par l'outil de génération de documentation.
• Pour éviter d'alourdir les exemples de ce tutoriel, les docstrings des programmes et de la définition des
fonctions ne sont pas repris
voir le chapitre sur les docstrings pour les exemples et discussions à ce propos.
1. def num_square(num):
2. """
3. returns square of number
4. """
5.
6. return num * num
Il y a de nombreuses manières d’appeler une fonction et d’autres types de déclarations ; merci de vous référer aux
liens fournis pour davantage d’informations :
- 12 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Par défaut, la fonction print ajoute systématiquement une ligne à la fin de son retour.
• Ce comportement peut être modifié en passant votre propre chaîne de caractères à l’argument end de cette
fonction.
1. >>> print("hi")
2. hi
3. >>> print("hi", end='')
4. hi>>>
5. >>> print("hi", end=' !!\n')
6. hi !!
7. >>>
• La fonction help peut être utilisée pour obtenir la documentation par l’interpréteur.
• Appuyer sur q pour revenir à l’aide.
1. >>> help(print)
2.
3. Help on built-in function print in module builtins:
4.
5. print(...)
6. print(value, ..., sep=' ', end='\n', file=[Link], flush=False)
7.
8. Prints the values to a stream, or to [Link] by default.
9. Optional keyword arguments:
10. file: a file-like object (stream); defaults to the current [Link].
11. sep: string inserted between values, default a space.
12. end: string appended after the last value, default a newline.
13. flush: whether to forcibly flush the stream.
• Plusieurs arguments peuvent être passés à la fonction print grâce au séparateur d’arguments , lors de son
appel.
• La valeur par défaut de l’argument sep, est un espace simple.
1. >>> a = 5
2. >>> b = 2
3.
4. >>> print(a+b, a-b)
5. 7 3
6.
7. >>> print(a+b, a-b, sep=' : ')
8. 7 : 3
9.
10. >>> print(a+b, a-b, sep='\n')
11. 7
12. 3
• Lors de l’affichage de variables, la méthode str est appelée et permet de donner une représentation en
chaîne de caractère (représentation humaine).
• Ainsi, une conversion explicite n’est pas nécessaire, à moins qu’une concaténation soit requise.
- 13 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
Comme autre solution, vous pouvez modifier sep avec plusieurs arguments :
• Pour rediriger le flux d’affichage à stderr au lieu du flux par défaut stdout, il vous suffit de modifier l’argument
file.
• Voir aussi [Link]().
• La fonction [Link]() peut être utilisée pour mettre en forme les chaînes de caractères et permettre
l’utilisation de plusieurs variables, d’une façon plus élégante que la seule concaténation.
1. >>> num1 = 42
2. >>> num2 = 7
3.
4. >>> '{} + {} = {}'.format(num1, num2, num1 + num2)
5. '42 + 7 = 49'
6.
7. # or save formatting in a variable and use wherever needed
8. >>> op_fmt = '{} + {} = {}'
9. >>> op_fmt.format(num1, num2, num1 + num2)
10. '42 + 7 = 49'
11. >>> op_fmt.format(num1, 29, num1 + 29)
12. '42 + 29 = 71'
13.
14. # and of course the expression can be used inside print directly
15. >>> print('{} + {} = {}'.format(num1, num2, num1 + num2))
16. 42 + 7 = 49
1. >>> num1
2. 42
3. >>> num2
4. 7
5. >>> print("{0} + {1} * {0} = {2}".format(num1, num2, num1 + num2 * num1))
6. 42 + 7 * 42 = 336
• Formatage de nombres – spécification utilisée avec argument optionnel et nombre optionnel, suivi par `:` puis
le style de formatage.
1. >>> appx_pi = 22 / 7
2. >>> appx_pi
- 14 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
3. 3.142857142857143
4.
5. # restricting number of digits after decimal point
6. # value is rounded off
7. >>> print("{0:.2f}".format(appx_pi))
8. 3.14
9. >>> print("{0:.3f}".format(appx_pi))
10. 3.143
11.
12. # aligning
13. >>> print("{0:<10.3f} and 5.12".format(appx_pi))
14. 3.143 and 5.12
15. >>> print("{0:>10.3f} and 5.12".format(appx_pi))
16. 3.143 and 5.12
17.
18. # zero filling
19. >>> print("{0:08.3f}".format(appx_pi))
20. 0003.143
• Changement de base.
1. >>> num1 = 42
2. >>> num2 = 7
3. >>> f'{num1} + {num2} = {num1 + num2}'
4. '42 + 7 = 49'
5. >>> print(f'{num1} + {num2} = {num1 + num2}')
6. 42 + 7 = 49
7.
8. >>> appx_pi = 22 / 7
9. >>> f'{appx_pi:08.3f}'
10. '0003.143'
11.
12. >>> f'{20:x}'
13. '14'
14. >>> f'{20:#x}'
15. '0x14'
Lectures complémentaires :
- 15 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
Par défaut, les arguments sont les suivants : start=0 et step=1 – vous pouvez donc les utiliser ou ne pas en tenir en
compte et passer vos propres arguments :
• range(stop) ;
• range(start, stop) ;
• range(start, stop, step) ;
• veuillez noter que le retour de la fonction range n’inclut pas la valeur définie à stop – ce sera toujours l’entier
précédent la valeur de stop ;
• voir le chapitre sur les listes pour l’introduction et les explications de cette partie ;
• ranges – documentation Python – pour davantage d’informations et d’exemples.
1. >>> range(5)
2. range(0, 5)
3.
4. >>> list(range(5))
5. [0, 1, 2, 3, 4]
6.
7. >>> list(range(-2, 2))
8. [-2, -1, 0, 1]
9.
10. >>> list(range(1, 15, 2))
11. [1, 3, 5, 7, 9, 11, 13]
12.
13. >>> list(range(10, -5, -2))
14. [10, 8, 6, 4, 2, 0, -2, -4]
Cette fonction est utile pour connaître le type de données ou de la variable qui est lui passée en argument.
1. >>> type(5)
2. <class 'int'>
3.
4. >>> type('Hi there!')
5. <class 'str'>
6.
7. >>> type(range(7))
8. <class 'range'>
9.
10. >>> type(None)
11. <class 'NoneType'>
12.
13. >>> type(True)
14. <class 'bool'>
15.
16. >>> arr = list(range(4))
17. >>> arr
18. [0, 1, 2, 3]
19. >>> type(arr)
20. <class 'list'>
1. #!/usr/bin/python3
2.
3. def print_num():
- 16 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
4. print("Yeehaw! num is visible in this scope, its value is: " + str(num))
5.
6. num = 25
7. print_num()
• Les variables définies avant l’appel à la fonction sont également visibles dans la définition de la fonction.
• Valeur des arguments par défaut – documentation Python – voir la description pour connaître quand les
valeurs par défaut sont évaluées (interprétées).
1. $ ./variable_scope_1.py
2. Yeehaw! num is visible in this scope, its value is: 25
Que se passe-t-il lorsqu’une variable déclarée dans un bloc est utilisée en dehors de ce dernier ?
1. #!/usr/bin/python3
2.
3. def square_of_num(num):
4. sqr_num = num * num
5.
6. square_of_num(5)
7. print("5 * 5 = {}".format(sqr_num))
• Ici sqr_num est déclaré au sein de la fonction square_of_num et n’est pas accessible en dehors.
1. $ ./variable_scope_2.py
2. Traceback (most recent call last):
3. File "./variable_scope_2.py", line 7, in <module>
4. print("5 * 5 = {}".format(sqr_num))
5. NameError: name 'sqr_num' is not defined
Une des solutions pour contourner un tel comportement est l’utilisation du mot-clef global.
1. #!/usr/bin/python3
2.
3. def square_of_num(num):
4. global sqr_num
5. sqr_num = num * num
6.
7. square_of_num(5)
8. print("5 * 5 = {}".format(sqr_num))
1. $ ./variable_scope_3.py
2. 5 * 5 = 25
Si le nom d’une variable est identique à l’intérieur et à l’extérieur d’une fonction (conflit de nom), le changement de
valeur dans un bloc de fonction n’affecte pas la variable extérieure à ce bloc.
1. #!/usr/bin/python3
2.
3. sqr_num = 4
4.
5. def square_of_num(num):
6. sqr_num = num * num
7. print("5 * 5 = {}".format(sqr_num))
8.
9. square_of_num(5)
10. print("Whoops! sqr_num is still {}!".format(sqr_num))
Notez que l’utilisation de global sqr_num affectera ici sqr_num, la variable en dehors du bloc définissant la fonction.
1. $ ./variable_scope_4.py
- 17 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
2. 5 * 5 = 25
3. Whoops! sqr_num is still 4!
1. #!/usr/bin/python3
2.
3. usr_ip = input("Enter an integer number: ")
4.
5. # Nécessité de convertir l’entrée dans le type désiré
6. usr_num = int(usr_ip)
7. sqr_num = usr_num * usr_num
8.
9. print("Square of entered number is: {}".format(sqr_num))
1. $ ./user_input_int.py
2. Enter an integer number: 23
3. Square of entered number is: 529
4.
5. $ ./user_input_int.py
6. Enter an integer number: abc
7. Traceback (most recent call last):
8. File "./user_input_int.py", line 6, in <module>
9. usr_num = int(usr_ip)
10. ValueError: invalid literal for int() with base 10: 'abc'
1. #!/usr/bin/python3
2.
3. usr_ip = input("Enter a floating point number: ")
4.
5. # Need to explicitly convert input string to desired type
6. usr_num = float(usr_ip)
7. sqr_num = usr_num * usr_num
8.
9. # Limit the number of digits after decimal points to 2
10. print("Square of entered number is: {0:.2f}".format(sqr_num))
1. $ ./user_input_float.py
2. Enter a floating point number: 3.232
3. Square of entered number is: 10.45
4.
5. $ ./user_input_float.py
6. Enter a floating point number: 42.7e5
7. Square of entered number is: 18232900000000.00
- 18 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
8.
9. $ ./user_input_float.py
10. Enter a floating point number: abc
11. Traceback (most recent call last):
12. File "./user_input_float.py", line 6, in <module>
13. usr_num = float(usr_ip)
14. ValueError: could not convert string to float: 'abc'
1. #!/usr/bin/python3
2.
3. usr_name = input("Hi there! What's your name? ")
4. usr_color = input("And your favorite color is? ")
5.
6. print("{}, I like the {} color too".format(usr_name, usr_color))
• Ici vous n’avez pas de conversion à effectuer, ni aucun caractère de nouvelle ligne à prendre en compte
contrairement à Perl.
1. $ ./user_input_str.py
2. Hi there! What's your name? learnbyexample
3. And your favorite color is? blue
4. learnbyexample, I like the blue color too
Note de traduction : dans ce contexte, certains termes n’ont pas été francisés (Shell, wildcards, etc.).
Certaines parties affichées peuvent être différentes en fonction de votre environnement de travail, de votre nom
d’utilisateur, votre répertoire de travail, etc.
1. #!/usr/bin/python3
2.
3. import subprocess
4.
5. # Exécuter la commande externe 'date'
6. [Link]('date')
7.
8. # Passer des options et des arguments à la commande
9. print("\nToday is ", end="", flush=True)
10. [Link](['date', '-u', '+%A'])
11.
12. # Autre exemple
13. print("\nSearching for 'hello world'", flush=True)
14. [Link](['grep', '-i', 'hello world', 'hello_world.py'])
• L’instruction import est utilisée pour charger le module subprocess qui fait partie de la bibliothèque Python
standard).
• La fonction call du module subprocess est une des solutions pour appeler une commande externe.
• En passant la valeur True à l’argument flush (False par défaut), vous vous assurez que votre message sera
affiché avant [Link].
• Pour transmettre des arguments à la commande, une liste de chaînes de caractères est passée au lieu d'une
chaîne de caractère unique.
1. $ ./calling_shell_commands.py
2. Tue Jun 21 18:35:33 IST 2016
3.
4. Today is Tuesday
- 19 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
5.
6. Searching for 'hello world'
7. print("Hello World")
Lecture complémentaire :
#!/usr/bin/python3
import subprocess
• Par défaut [Link] n’est pas étendu (jolers du Shell), lors de l’exécution d'une substitution de
commande, etc.
• Vous pouvez outrepasser ce comportement en passant la valeur True à l’argument shell.
• Notez que la commande entière est maintenant passée en tant que chaîne et non en tant que liste de
chaînes.
• Les apostrophes (quotes : ')doivent être échappées (\').
• Utilisez shell=True seulement si vous êtes sûr que la commande doit être exécutée dans l’environnement
Shell, sinon il pourrait y avoir une faille de sécurité.
• documentation Python – subprocess, Popen.
1. $ ./shell_expansion.py
2. Pas d' expansion shell quand shell=False
3. Hello $USER
4.
5. expansion shell quand shell=True
6. Hello learnbyexample
7.
8. Recherche pour 'hello world'
9. print("Hello World")
• Dans certains cas, vous pouvez éviter l’échappement en alternant l’utilisation de guillemets et d’apostrophes
comme suit :
# ou ceci
[Link]("grep -i 'hello world' hello_world.py", shell=True)
• La redirection des sorties de commandes Shell peut être utilisée comme d’ordinaire.
# pour plus de clarté, utilisez des variables et évitez les longues chaînes dans des fonctions
cmd = "grep -h 'test' [Link] test_list.txt > grep_test.txt"
- 20 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
[Link](cmd, shell=True)
#!/usr/bin/python3
import subprocess
• La sortie de getstatusoutput() est un de type de données tuple – plus d’informations et d’exemples dans les
prochains chapitres.
• getstatusoutput() et getoutput() sont des fonctions héritées.
• D’autres fonctions plus récentes et plus d'options de sécurité :
$ ./shell_command_output_redirections.py
Obtention de la sortie de la commande 'pwd'
/home/learnbyexample/Python/python_programs
- 21 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
VI - Structures de contrôle
>>> num = 5
>>> num > 2
True
>>> num > 3 and num <= 5
True
>>> 3 < num <= 5
True
>>> num % 3 == 0 or num % 5 == 0
True
>>> bool(num)
True
>>> bool(fav_detective)
True
>>> bool(3)
True
>>> bool(0)
False
>>> bool("")
False
>>> bool(None)
False
>>> if -1:
... print("-1 évalue à True dans la vérification de condition")
...
avec celle-ci
- 22 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• (10, 21, 33) est un type de données tuple. Il sera traité dans les chapitres suivants.
• Python docs - Truth Value Testing
VI-B - if
1. #!/usr/bin/python3
2.
3. num = 45
4.
5. # only if
6. if num > 25:
7. print("Hourra! {} est plus grand que 25".format(num))
8.
9. # if-else
10. if num % 2 == 0:
11. print("{} est un nombre pair".format(num))
12. else:
13. print("{} est un nombre impair".format(num))
14.
15. # if-elif-else
16. # N’importe quel chiffre de elif peut être utilisé
17. if num < 0:
18. print("{} est un nombre négatif".format(num))
19. elif num > 0:
20. print("{} est un nombre positif".format(num))
21. else:
22. print("{} n’est ni positif ni négatif".format(num))
• Le bloc de code pour les fonctions, le contrôle des structures, etc. est distingué par un code de retrait
(indentation) :
$ ./if_elif_else.py
Hourra! 45 est plus grand que 25
45 est un nombre impair
45 est un nombre positif
1. #!/usr/bin/python3
2.
3. num = 42
4.
5. num_type = 'even' if num % 2 == 0 else 'odd'
6. print("{} is an {} number".format(num, num_type))
- 23 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. $ ./if_else_oneliner.py
2. 42 est un nombre pair
VI-D - for
1. #!/usr/bin/python3
2.
3. number = 9
4. for i in range(1, 5):
5. mul_table = number * i
6. print("{} * {} = {}".format(number, i, mul_table))
• Une boucle basée sur une itération traditionnelle peut être écrite en utilisant la fonction« range ».
• Rappelez-vous que par défaut« start=0 », « step=1 » et que la valeur« stop »n’est pas incluse.
• Les itérations sur des variables comme list, tuples, etc. seront traitées dans les chapitres suivants.
• La documentation officielle est ici : Python docs – itertools .
1. $ ./for_loop.py
2. 9 * 1 = 9
3. 9 * 2 = 18
4. 9 * 3 = 27
5. 9 * 4 = 36
VI-E - while
1. #!/usr/bin/python3
2.
3. # toujours demander à l’utilisateur d’insérer un nombre jusqu’à avoir un nombre positif
4. usr_string = 'Ce n’est pas un nombre'
5. while not usr_string.isnumeric():
6. usr_string = input("Entrez un entier positif : ")
• La boucle while nous permet d’exécuter un bloc d’instructions jusqu’à satisfaction d’une condition.
• Python docs - string methods .
1. $ ./while_loop.py
2. Entrez un entier positif : abc
3. Entrez un entier positif : 1.2
4. Entrez un entier positif : 23
5. $
Les mots-clefs « continue » et « break » sont utilisés pour modifier le flux normal des boucles dans certaines
conditions.
1. #!/usr/bin/python3
2.
3. prev_num = 0
4. curr_num = 0
5. print("Les dix premiers nombres de la suite de Fibonacci: ", end='')
6.
7.
8. for num in range(10):
9. print(curr_num, end=' ')
10.
11. if num == 0:
12. curr_num = 1
- 24 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
13. continue
14.
15. temp = curr_num
16. curr_num = curr_num + prev_num
17. prev_num = temp
18.
19. print("")
• La fonction « continue » peut être placée n’importe où dans la boucle sans avoir à se soucier de la
complication du flux de code.
• Cet exemple est juste pour vous montrer l’utilisation de la fonction « continue », veuillez voir ici pour d’autres
méthodes Python.
1. $ ./loop_with_continue.py
2. Les dix premiers nombres de la suite de Fibonacci: 0 1 1 2 3 5 8 13 21 34
break – ignore le reste des instructions dans la boucle (s’il y en a) et quitte la boucle.
1. #!/usr/bin/python3
2.
3. import random
4.
5. while True:
6. # comme avec la fonction range(), 500 n’est pas inclus
7. random_int = [Link](500)
8. if random_int % 4 == 0 and random_int % 6 == 0:
9. break
10. print("Nombre aléatoire divisible par 4 et 6: {}".format(random_int))
1. $ ./loop_with_break.py
2. Nombre aléatoire divisible par 4 et 6: 168
3. $ ./loop_with_break.py
4. Nombre aléatoire divisible par 4 et 6: 216
5. $ ./loop_with_break.py
• Dans le cas de boucles imbriquées, les fonctions « continue » et « break » n’affectent que la boucle parente
immédiate.
• Python docs - else clauses on loops .
- 25 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Comme la fonction « range() », l’index de la liste a le format « start:stop:step » , la valeur « stop » étant non
inclusive.
1. >>> books = ['Harry Potter', 'Sherlock Holmes', 'To Kill a Mocking Bird']
2. >>> books[2] = "Ender's Game"
3. >>> print(books)
4. ['Harry Potter', 'Sherlock Holmes', "Ender's Game"]
5.
6. >>> prime = [2, 3, 5, 7, 11]
7. >>> prime[2:4]
8. [5, 7]
9. >>> prime[:3]
10. [2, 3, 5]
11. >>> prime[3:]
12. [7, 11]
13.
14. >>> prime[-1]
15. 11
- 26 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Le format d’indexation peut être utilisé pour extraire une variable de la liste ou se modifier.
• Ceci aide à modifier une liste sans changer son id, ce qui est utile si le nom de variable est référencé autre
part (regardez la section suivante)
1. >>> id(nums)
2. 140598790579336
3. >>> nums[:] = [1, 2, 5, 4.3]
4. >>> nums
5. [1, 2, 5, 4.3]
6. >>> id(nums)
7. 140598790579336
8.
9. # l’affectation sans utiliser [:] changera son id
10. >>> nums = [1.2, -0.2, 0, 2]
11. >>> id(nums)
12. 140598782943752
- 27 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. >>> a = 5
2. >>> id(a)
3. 10105952
4. >>> a = 10
5. >>> id(a)
6. 10106112
7.
8. >>> b = a
9. >>> id(b)
10. 10106112
11. >>> b = 4
12. >>> b
13. 4
14. >>> a
15. 10
16. >>> id(b)
17. 10105920
• Cependant, il est important de savoir, pour les variables de types muables comme « lists », comment ces
variables sont copiées et transmises aux fonctions.
• Quand un élément d’une liste de variables est modifié, Python le fait en changeant la valeur (mutation) d’un
objet à cet index.
• Évitez de copier des listes utilisant un format d’indexation, car ceci fonctionne pour des listes d’une seule
dimension et non pour des dimensions supérieures.
- 28 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. >>> books = []
2. >>> books
3. []
4. >>> [Link]('Harry Potter')
5. >>> books
6. ['Harry Potter']
7.
8. >>> even_numbers = [2, 4, 6, 8, 10]
9. >>> even_numbers += [12, 14, 16, 18, 20]
10. >>> even_numbers
11. [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
12.
13. >>> even_numbers = [2, 4, 6, 8, 10]
14. >>> even_numbers.extend([12, 14, 16, 18, 20])
15. >>> even_numbers
16. [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
17.
18. >>> a = [[1, 3], [2, 4]]
19. >>> [Link]([[5, 6]])
20. >>> a
21. [[1, 3], [2, 4], [5, 6]]
- 29 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. >>> books = ['Harry Potter', 'Sherlock Holmes', 'To Kill a Mocking Bird']
2. >>> [Link](2, "The Martian")
3. >>> books
4. ['Harry Potter', 'Sherlock Holmes', 'The Martian', 'To Kill a Mocking Bird']
- 30 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
4. >>> 13 in prime
5. False
• Tri .
Triez en vous basant sur une clef , par exemple en vous basant sur la longueur d’une chaîne.
L es expressions lambda sont utiles pour transmettre une seule expression personnalisée, par exemple un tri
basé sur la deuxième lettre.
• min et max.
• Liste inversée
- 31 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
7. >>> id(prime)
8. 140684818102088
9.
10. >>> a = [1, 5.3, 321, 0, 1, 2]
11. >>> id(a)
12. 140684818886024
13. >>> a = a[::-1]
14. >>> a
15. [2, 1, 0, 321, 5.3, 1]
16. >>> id(a)
17. 140684818102664
1. >>> prime
2. [2, 3, 5, 7, 11]
3. >>> a = [4, 2]
4. >>> prime == a
5. False
6.
7. >>> prime == [2, 3, 5, 11, 7]
8. False
9. >>> prime == [2, 3, 5, 7, 11]
10. True
- 32 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. #!/usr/bin/python3
2.
3. numbers = [2, 12, 3, 25, 624, 21, 5, 9, 12]
4. odd_numbers = []
5. even_numbers = []
6.
7. for num in numbers:
8. odd_numbers.append(num) if(num % 2) else even_numbers.append(num)
9.
10. print("nombres : {}".format(numbers))
11. print("nombres_impairs : {}".format(odd_numbers))
12. print("nombres_pairs : {}".format(even_numbers))
• Généralement, il suffit de traiter chaque élément d’une liste sans avoir besoin des valeurs d’index de ces
éléments.
1. $ ./list_looping.py
2. numbers: [2, 12, 3, 25, 624, 21, 5, 9, 12]
3. odd_numbers: [3, 25, 21, 5, 9]
4. even_numbers: [2, 12, 624, 12]
1. #!/usr/bin/python3
2.
3. north_dishes = ['Aloo tikki', 'Baati', 'Khichdi', 'Makki roti', 'Poha']
4.
5. print("Mes vaisselles favorites du nord de l’Inde :")
6. for idx, item in enumerate(north_dishes):
7. print("{}. {}".format(idx + 1, item))
• Dans ce cas, on obtient un « tuple » à chaque itération consistant en un compte (valeur par défaut 0) et un
élément de la liste.
• Python docs – enumerate .
1. $ ./list_looping_enumeration.py
2. Mes vaisselles favorites du nord de l’Inde :
3. 1. Aloo tikki
4. 2. Baati
5. 3. Khichdi
6. 4. Makki roti
7. 5. Poha
- 33 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. #!/usr/bin/python3
2.
3. import time
4.
5. numbers = list(range(1,100001))
6. fl_square_numbers = []
7.
8. # référencer time
9. t0 = time.perf_counter()
10.
11. # ------------ la boucle for ------------
12. for num in numbers:
13. fl_square_numbers.append(num * num)
14.
15. # référencer time
16. t1 = time.perf_counter()
17.
18. # ------- compréhension de la liste -------
19. lc_square_numbers = [num * num for num in numbers]
20.
21. # performance des résultats
22. t2 = time.perf_counter()
23. fl_time = t1 - t0
24. lc_time = t2 - t1
25. improvement = (fl_time - lc_time) / fl_time * 100
26.
27. print("Temps avec la boucle for : {:.4f}".format(fl_time))
28. print("Temps avec la liste de compréhension : {:.4f}".format(lc_time))
29. print("Amélioration : {:.2f}%".format(improvement))
30.
31. if fl_square_numbers == lc_square_numbers:
32. print("\nfl_square_numbers et lc_square_numbers sont équivalents")
33. else:
34. print("\nfl_square_numbers et lc_square_numbers ne sont PAS équivalents")
• La liste de compréhension est une façon de construire certaines boucles usuelles dans le langage python
• C’est une option plus lisible et plus rapide que les boucles.
• Dans cet exemple, ne pas avoir l’obligation d’utiliser la méthode « append() » permet aussi de gagner
beaucoup de temps dans le cas de compréhension de liste.
• Les valeurs de temps dans cet exemple sont indicatives et ne devraient pas être considérées comme
absolues
Elles varient même entre deux exécutions, que dire de machines différentes.
1. $ ./list_comprehension.py
2. Temps avec la boucle for : 0.0142
3. Temps avec liste de compréhension : 0.0062
4. Amélioration : 56.36%
5.
6. fl_square_numbers et lc_square_numbers sont équivalents
- 34 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
1. >>> p = [1, 3, 5]
2. >>> q = [3, 214, 53]
3. >>> [i+j for i,j in zip(p, q)]
4. [4, 217, 58]
5. >>> [i*j for i,j in zip(p, q)]
6. [3, 642, 265]
Utilisez un générateur d’expression , la séquence doit être transmise à une autre fonction
Pour plus d’exemples, y compris les boucles imbriquées, veuillez voir ici :
• Étant donné que les entrées de l’utilisateur sont toutes traitées comme des chaînes, il est nécessaire de
traiter en fonction du délimiteur convenu et du type de données requis.
- 35 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
4. 76
5. >>> [Link](a)
6. 4
1. >>> [Link](a)
2. >>> a
3. [5, 2, 76, 4]
• Obtenir aléatoirement une partie d’une liste, ce qui ne modifie pas la variable de liste.
• Obtenir des éléments aléatoires d’une liste sans répétition en créant une fonction itérable en utilisant Python
docs – iter.
• La différence par rapport à la simple utilisation d’une liste aléatoire est que cela évite le besoin de maintenir
un compteur d’index séparé et qu’une exception automatique est déclenchée si elle sort de la plage.
Nous avons déjà vu des types de séquences dans les chapitres précédents - chaînes, intervalles et listes. Le tuple
est un autre type de séquence.
Nous verrons plus d'opérations sur les chaînes suivies par tuple, les ensembles et les dictionnaires dans ce chapitre.
VIII-A - Chaînes
• L’indexation que nous avons vue pour les listes peut aussi bien être appliquée pour les chaînes.
• Comme les chaînes sont non réinscriptibles, elles ne peuvent pas être modifiées comme des listes.
- 36 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
2. >>> book[0]
3. 'A'
4. >>> book[3]
5. 'h'
6. >>> book[-1]
7. 't'
8. >>> book[10]
9. Traceback (dernier appel passé):
10. File "<stdin>", line 1, in <module>
11. IndexError: string index out of range
12.
13. >>> book[2:6]
14. 'chem'
15. >>> book[:5]
16. 'Alche'
17. >>> book[5:]
18. 'mist'
19. >>> book[::-1]
20. 'tsimehclA'
21. >>> book[:]
22. 'Alchemist'
23.
24. >>> list(book)
25. ['A', 'l', 'c', 'h', 'e', 'm', 'i', 's', 't']
26.
27. >>> import string
28. >>> string.ascii_lowercase[:10]
29. 'abcdefghij'
30. >>> list([Link])
31. ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
1. >>> book
2. 'Alchemist'
3.
4. >>> for char in book:
5. ... print(char)
6. ...
7. A
8. l
9. c
10. h
11. e
12. m
13. i
14. s
15. t
• Autres opérations.
1. >>> book
2. 'Alchemist'
3.
4. >>> len(book)
5. 9
6.
7. >>> [Link]('A')
8. 0
9. >>> [Link]('t')
10. 8
11.
12. >>> 'A' in book
13. True
14. >>> 'B' in book
15. False
16. >>> 'z' not in book
17. True
18.
19. >>> min('zealous')
- 37 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
20. 'a'
21. >>> max('zealous')
22. 'z'
VIII-B - Tuples
• Les tuples sont similaires aux listes, mais ils sont non réinscriptibles et aussi utiles d’autres façons.
• Les éléments individuels sont à la fois mutables et immuables.
• Exemple d’opérations.
• Un tuple est pratique pour l’affectation de plusieurs variables et le renvoi de plus d’une valeur dans des fonctions.
• Nous avons déjà vu un exemple expliquant quand utiliser « enumerate » pour parcourir des listes.
1. >>> a = 5
2. >>> b = 20
3. >>> a, b = b, a
4. >>> a
5. 20
6. >>> b
7. 5
8.
- 38 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
9. >>> c = 'foo'
10. >>> a, b, c = c, a, b
11. >>> a
12. 'foo'
13. >>> b
14. 20
15. >>> c
16. 5
17.
18. >>> def min_max(arr):
19. ... return min(arr), max(arr)
20. ...
21. >>> min_max([23, 53, 1, -34, 9])
22. (-34, 53)
• Similaire à list().
1. >>> tuple('books')
2. ('b', 'o', 'o', 'k', 's')
3.
4. >>> a = [321, 899.232, 5.3, 2, 1, -1]
5. >>> tuple(a)
6. (321, 899.232, 5.3, 2, 1, -1)
VIII-C - Ensemble
- 39 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
3. {1, 2, 3, 5, 6.3, 7}
4.
5. >>> primes = {3, 2, 11, 3, 5, 13, 2}
6. >>> primes
7. {2, 3, 11, 13, 5}
8.
9. >>> [Link](primes)
10. {1, 2, 3, 5, 6.3, 7, 11, 13}
11.
12. >>> [Link](nums)
13. {11, 13}
14. >>> [Link](primes)
15. {1, 6.3, 7}
• Exemples d’opérations.
1. >>> len(nums)
2. 6
3.
4. >>> nums[0]
5. Traceback (Dernier appel passé):
6. File "<stdin>", line 1, in <module>
7. TypeError: 'set' object does not support indexing
8.
9. >>> book
10. 'Alchemist'
11. >>> set(book)
12. {'i', 'l', 's', 'A', 'e', 'h', 'm', 't', 'c'}
13. >>> set([1, 5, 3, 1, 9])
14. {1, 9, 3, 5}
15. >>> list(set([1, 5, 3, 1, 9]))
16. [1, 9, 3, 5]
17.
18. >>> nums = {1, 2, 3, 5, 6.3, 7}
19. >>> nums
20. {1, 2, 3, 5, 6.3, 7}
21. >>> [Link]()
22. 1
23. >>> nums
24. {2, 3, 5, 6.3, 7}
25.
26. >>> [Link](1)
27. >>> nums
28. {1, 2, 3, 5, 6.3, 7}
29.
30. >>> 6.3 in nums
31. True
32.
33. >>> for n in nums:
34. ... print(n)
35. ...
36. 1
37. 2
38. 3
39. 5
40. 6.3
41. 7
VIII-D - Dictionnaire
• Les types « dict » peuvent être considérés comme une liste non ordonnée du key:value ou une liste nommée
d’éléments.
- 40 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Jusqu’à Python v3.5 (et quelques implémentations de la version 3.6), il était inutile de conserver l’ordre
d’insertion des éléments « dict ».
• Boucle et impression.
1. >>> marks
2. {'Ravi': 92, 'Rohit': 75, 'Rahul': 86}
3. >>> marks['Rajan'] = 79
4. >>> marks
5. {'Ravi': 92, 'Rohit': 75, 'Rahul': 86, 'Rajan': 79}
6.
7. >>> del marks['Ravi']
8. >>> marks
9. {'Rohit': 75, 'Rahul': 86, 'Rajan': 79}
10.
11. >>> len(marks)
12. 3
13.
14. >>> fav_books
15. {'Thriller': 'The Da Vinci Code', 'Fantaisie': 'Harry Potter', 'Détective': 'Sherlock
Holmes'}
16. >>> "fantasy" in fav_books
17. True
18. >>> "satire" in fav_books
19. False
- 41 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Quelques implémentations comme la référence CPython implementation pour la version 3.6 conservent
aussi l’ordre d’insertion.
1. >>> marks = {'Rahul' : 86, 'Ravi' : 92, 'Rohit' : 75, 'Rajan': 79}
2. >>> marks
3. {'Rahul': 86, 'Ravi': 92, 'Rohit': 75, 'Rajan': 79}
4.
5. >>> for name, mark in [Link]():
6. ... print(f'{name:5s}: {mark}')
7. ...
8. Rahul: 86
9. Ravi : 92
10. Rohit: 75
11. Rajan: 79
12.
13. >>> del marks['Ravi']
14. >>> marks
15. {'Rahul': 86, 'Rohit': 75, 'Rajan': 79}
16.
17. >>> marks['Ranjit'] = 65
18. >>> marks
19. {'Rahul': 86, 'Rohit': 75, 'Rajan': 79, 'Ranjit': 65}
IX - Manipulation du texte
- 42 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Formatage.
• Argument de largeur spécifiant la longueur totale de la sortie.
- 43 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
>>> '1'.isnumeric()
True
>>> 'abc1'.isnumeric()
False
>>> '1.2'.isnumeric()
False
• Vérifier si une séquence de caractères est présente ou non.
1. >>> sentence
2. 'This is a sample string'
3.
4. >>> [Link]('This')
5. True
6. >>> [Link]('The')
7. False
8.
9. >>> [Link]('ing')
10. True
11. >>> [Link]('ly')
12. False
• Séparer une chaîne de caractères à partir d’un caractère ou une série de caractères.
• Renvoie une liste.
• Pour séparer une chaîne à partir d’une expression régulière, utilisez plutôt [Link]().
- 44 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
2.
3. >>> [Link]()
4. ['This', 'is', 'a', 'sample', 'string']
5.
6. >>> "oranges:5".split(':')
7. ['oranges', '5']
8. >>> "oranges :: 5".split(' :: ')
9. ['oranges', '5']
10.
11. >>> "a e i o u".split(' ', maxsplit=1)
12. ['a', 'e i o u']
13. >>> "a e i o u".split(' ', maxsplit=2)
14. ['a', 'e', 'i o u']
15.
16. >>> line = '{1.0 2.0 3.0}'
17. >>> nums = [float(s) for s in [Link]('{}').split()]
18. >>> nums
19. [1.0, 2.0, 3.0]
• Joindre des listes de chaînes.
1. >>> str_list
2. ['This', 'is', 'a', 'sample', 'string']
3. >>> ' '.join(str_list)
4. 'This is a sample string'
5. >>> '-'.join(str_list)
6. 'This-is-a-sample-string'
7.
8. >>> c = ' :: '
9. >>> [Link](str_list)
10. 'This :: is :: a :: sample :: string'
• Remplacer des caractères.
• e
Le 3 argument précise combien de fois le remplacement doit être effectué.
• La variable doit être spécifiquement réassignée pour que sa valeur soit changée.
• la fonction Open ;
• la lecture de fichiers ;
• l’écriture dans des fichiers ;
• l’édition « à la volée » avec fileinput.
- 45 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• 3 modes d’ouverture :
1. #!/usr/bin/python3
2.
3. # Ouvrir le fichier, lire ligne par ligne et l’afficher
4. filename = 'hello_world.py'
5. f = open(filename, 'r', encoding='ascii')
6.
7. print("Contenu de " + filename)
8. print('-' * 30)
9. for line in f:
10. print(line, end='')
11.
12. [Link]()
13.
14. # 'with' est une solution plus simple, qui gère automatiquement la fermeture du fichier.
15. filename = 'while_loop.py'
16.
17. print("\n\nContenu de " + filename)
18. print('-' * 30)
19. with open(filename, 'r', encoding='ascii') as f:
20. for line in f:
21. print(line, end='')
• L’encodage par défaut est habituellement ‘UTF-8’, utilisez ‘ASCII’ quand c’est possible.
• Utiliser with et le nom de gestionnaire de f est une convention répandue.
1. $ ./file_reading.py
2. Contenu de hello_world.py
3. ------------------------------
4. #!/usr/bin/python3
5.
6. print("Hello World")
7.
8.
9. Contenu de while_loop.py
10. ------------------------------
11. #!/usr/bin/python3
12.
13. # demande continuellement une entrée jusqu’à saisie d’un entier positif
14. usr_string = 'not a number'
15. while not usr_string.isnumeric():
16. usr_string = input("Entrez un entier positif : ")
1. #!/usr/bin/python3
2.
- 46 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Lire le contenu du fichier en entier comme une unique chaîne de texte en utilisant read()
print("Hello World")
• Lire toutes les lignes du fichier en tant que liste en utilisant readlines()
>>> [Link]
False
>>> [Link]()
>>> [Link]
True
#!/usr/bin/python3
- 47 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
• Utilisez la méthode write() pour écrire une chaîne de texte dans le fichier.
• Pour ajouter du texte à un fichier existant, utilisez le mode 'a' plutôt que le mode 'w'
$ ./file_writing.py
$ cat new_file.txt
This is a sample line of text
Yet another line
#!/usr/bin/python3
import fileinput
with [Link](inplace=True) as f:
for line in f:
line = [Link]('line of text', 'line')
print(line, end='')
• Les fichiers qui doivent être modifiés sont spécifiés comme arguments de ligne de commande quand le
programme est lancé.
• Notez que la fonction print doit être utilisée au lieu de [Link]
• Avec la lecture par ligne, chaque itération a déjà un caractère de nouvelle ligne, end est alors assigné comme
un caractère vide.
• Python docs - fileinput
$ ./inplace_file_editing.py new_file.txt
$ cat new_file.txt
C’est une simple ligne
Une autre ligne
$ # pour modifier tous les fichiers avec .txt dans le dossier courant, utilisez
$ ./inplace_file_editing.py *.txt
$ # stdin peut aussi être passé en tant qu’entrée inplace est désactivé
$ echo 'a line of text' | ./inplace_file_editing.py
a line
# Pour créer une sauvegarde du fichier original, spécifiez une extension au paramètre backup
with [Link](inplace=True, backup='.bkp') as f:
En attente de traducteur
En attente de traducteur
XIII - Docstrings
En attente de traducteur
- 48 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]
Les bases de la programmation Python par l’exemple par Sundeep Agarwal
XIV - Test
En attente de traducteur
XV - Exercices
En attente de traducteur
XVI - En complément
En attente de traducteur
- 49 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
[Link]