Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
teaching:progappchim:notions_fondamentales [2021/03/08 08:51] – [Références] villersd | teaching:progappchim:notions_fondamentales [2022/05/09 13:31] – [Le type de données texte ou "string" :] villersd |
---|
| |
Les instruction if peuvent souvent être remplacées par une alternative plus lisible, plus générale. Cf. par exemple [[https://medium.com/swlh/3-alternatives-to-if-statements-to-make-your-python-code-more-readable-91a9991fb353|3 Alternatives to If Statements That Make your Code More Readable]] (Jonny Jackson, Medium, 24/09/2020) | Les instruction if peuvent souvent être remplacées par une alternative plus lisible, plus générale. Cf. par exemple [[https://medium.com/swlh/3-alternatives-to-if-statements-to-make-your-python-code-more-readable-91a9991fb353|3 Alternatives to If Statements That Make your Code More Readable]] (Jonny Jackson, Medium, 24/09/2020) |
| |
| Dans quelques cas, il est intéressant d'écrire les instructions conditionnelles sur une seule ligne de code. //Cf.// [[https://towardsdatascience.com/python-if-else-statement-in-one-line-ternary-operator-explained-eca2be64b7cc|Python If-Else Statement in One Line — Ternary Operator Explained - Single-line conditionals in Python? Here’s when to and when NOT to use them]] Dario Radečić, Medium, 11/01/2022 |
| |
| |
| |
==== Structures répétitives ==== | ==== Structures répétitives ==== |
* [[https://medium.com/analytics-vidhya/looping-techniques-in-python-3bbf907b8dfa|Looping Techniques in Python - Let’s learn about looping techniques using functions like enumerate, zip, sorted, reversed in python]] Indhumathy Chelliah; Medium, 30/07/2020 | * [[https://medium.com/analytics-vidhya/looping-techniques-in-python-3bbf907b8dfa|Looping Techniques in Python - Let’s learn about looping techniques using functions like enumerate, zip, sorted, reversed in python]] Indhumathy Chelliah; Medium, 30/07/2020 |
* [[https://medium.com/better-programming/how-to-use-for-loops-better-in-python-1dfbc3d9e91f|How To Use For Loops Better in Python - A few functions that can improve your looping logic]] Yong Cui, Medium, Jan 8, 2020 | * [[https://medium.com/better-programming/how-to-use-for-loops-better-in-python-1dfbc3d9e91f|How To Use For Loops Better in Python - A few functions that can improve your looping logic]] Yong Cui, Medium, Jan 8, 2020 |
| * [[https://medium.com/techtofreedom/the-art-of-writing-loops-in-python-68e9869e4ed4|The Art of Writing Loops in Python - Simple is better than complex]] Yang Zhou, Medium, 03/05/2021 |
| |
---- | ---- |
</code> | </code> |
| |
=== Applications à la détection de palindromes et anagrammes === | === Applications à la détection de palindromes, anagrammes et pangrammes === |
| |
| |
</code> | </code> |
| |
| <code python string_pangrammes-01.py> |
| #!/usr/bin/env python3 |
| # -*- coding: utf-8 -*- |
| """ |
| Created on Mon May 9 11:54:40 2022 |
| |
| @author: villersd |
| |
| Test d'une chaîne pour connaître le nombre de lettres de l'apahabet utilisées |
| et si elles le sont toutes (pangramme). |
| ref : https://fr.wikipedia.org/wiki/Pangramme |
| |
| """ |
| import string |
| print('ASCII letters : ', string.ascii_lowercase) |
| |
| # test string : |
| ts = "Portez ce vieux whisky au juge blond qui fume" |
| |
| # dict count strategy |
| letter_count_dict = dict( (key, ts.lower().count(key)) for key in string.ascii_lowercase ) |
| print(letter_count_dict) |
| |
| # list count strategy |
| letter_count_list = [ts.lower().count(key) for key in string.ascii_lowercase] |
| print(letter_count_list) |
| |
| # using all() |
| print(all(letter_count_list)) |
| |
| # one-liner : |
| print(all([ts.lower().count(key) for key in string.ascii_lowercase])) |
| print("All ASCII letters : ", all(["Portez ce vieux whisky au juge blond qui fume".lower().count(key) for key in string.ascii_lowercase])) |
| </code> |
| |
| Pour une technique de détection utilisant les nombres premiers : [[https://mobile.twitter.com/fermatslibrary/status/1385957963429515266]] (programmer et comparer !) |
| |
| === Chaînes préfixées === |
| Les chaînes pêuvent être préfixées, pour tenir compte de types et d'utilisations particulières : |
| |
| ^Prefix ^Utilisation ^Exemple ^ |
| |None |chaîne de caractère habituelle |"Hello world !" | |
| |r |raw string (utilisant plusieurs caractères \ s'échappement) |print(r"C:\Users\johndoe\documents") | |
| |b |chaîne binaire |b"byte string" | |
| |u |chaîne unicode |u"Unicode string" | |
| |f |chaîne de formatage fstring |print(f"My cool string is called {name.upper()}.") | |
| |
=== Références === | === Références === |
* [[https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not|les opérateurs booléens]] | * [[https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not|les opérateurs booléens]] |
* [[https://docs.python.org/3/library/stdtypes.html#comparisons|les opérateurs de comparaison]] | * [[https://docs.python.org/3/library/stdtypes.html#comparisons|les opérateurs de comparaison]] |
| * Les 6 opérateurs ==, !=, <, >, <=, >= sont destinés à comparer des valeurs d'objets (cf. les instructions conditionnelles,...) |
| * Les opérateurs **is** et **is not** sont destinés à comparer l'identité d'objets, en particulier des objets uniques (singletons) du langage, comme **None** |
| |
==== Les listes ==== | ==== Les listes ==== |
| |
* //range(start, stop, step)// avec des arguments entiers renvoie une liste d'entiers commençant par //start//, incrémentés chaque fois de la valeur //step//, jusque la valeur //stop// exclue. FIXME : → generator depuis python 3 ! | * //range(start, stop, step)// avec des arguments entiers renvoie une liste d'entiers commençant par //start//, incrémentés chaque fois de la valeur //step//, jusque la valeur //stop// exclue. FIXME : → generator depuis python 3 ! |
* La fonction [[https://docs.python.org/2/library/functions.html#enumerate|enumerate]] permet de parcourir les éléments d'une liste en même temps que leur indice, bien plus pratiquement qu'en passant par l'utilisation de range : | * **La fonction [[https://docs.python.org/2/library/functions.html#enumerate|enumerate]] permet de parcourir les éléments d'une liste en même temps que leur indice, bien plus pratiquement qu'en passant par l'utilisation de range** : |
| |
<code python> | <code python> |
* [[https://levelup.gitconnected.com/introducing-high-performance-datatypes-in-python-with-the-collections-library-3d8c334827a5|Introducing high-performance datatypes in Python with the collections library]] George Seif, Medium, Oct 15, 2019 | * [[https://levelup.gitconnected.com/introducing-high-performance-datatypes-in-python-with-the-collections-library-3d8c334827a5|Introducing high-performance datatypes in Python with the collections library]] George Seif, Medium, Oct 15, 2019 |
* [[https://medium.com/better-programming/your-one-stop-guide-to-collections-in-python-4c0b36243561|Your One-Stop Guide to Collections in Python - Make your code awesome using high-order containers]] Felix Antony, Medium, 21/01/2021 | * [[https://medium.com/better-programming/your-one-stop-guide-to-collections-in-python-4c0b36243561|Your One-Stop Guide to Collections in Python - Make your code awesome using high-order containers]] Felix Antony, Medium, 21/01/2021 |
| * [[https://towardsdatascience.com/write-ultra-concise-code-with-python-collections-ab79f03bb54|Write Ultra-Concise Code with Python collections | by Thomas Hikaru Clark | Oct, 2021 | Towards Data Science]] Thomas Hikaru Clark, Medium, 11/10/2021 |
| |
| |
Des types non intégrés par défaut dans Python peuvent facilement être implémentés, en utilisant les types répandus. C'est pas exemple le cas des [[https://fr.wikipedia.org/wiki/Arbre_enracin%C3%A9|arbres]] (informatique, théorie des graphes) : | Des types non intégrés par défaut dans Python peuvent facilement être implémentés, en utilisant les types répandus. C'est pas exemple le cas des [[https://fr.wikipedia.org/wiki/Arbre_enracin%C3%A9|arbres]] (informatique, théorie des graphes) : |
* [[https://realpython.com/absolute-vs-relative-python-imports/|Absolute vs Relative Imports in Python]] | * [[https://realpython.com/absolute-vs-relative-python-imports/|Absolute vs Relative Imports in Python]] |
* [[https://medium.com/dev-genius/importing-packages-in-python-fb3f4a64ed14|Importing Packages in Python - Exploring different ways to import packages in Python]] Indhumathy Chelliah, Medium, Oct 24, 2020 | * [[https://medium.com/dev-genius/importing-packages-in-python-fb3f4a64ed14|Importing Packages in Python - Exploring different ways to import packages in Python]] Indhumathy Chelliah, Medium, Oct 24, 2020 |
| * [[https://medium.com/techtofreedom/3-key-skills-for-handling-modules-in-python-d644c5e5682|3 Key Skills for Handling Modules in Python]] by Yang Zhou, TechToFreedom, Mar, 2021, Medium |
| |
* ... | * ... |
| |
→ [[print_format|Impressions avec la méthode .print()]] | → [[print_format|Impressions avec la méthode .print()]] |
| |
FIXME : cf. [[https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/]] (f-strings vs format) | FIXME **intégrer f-string !**: cf. |
| * [[https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/]] (f-strings vs format) |
| * [[https://python.plainenglish.io/become-a-master-of-string-formatting-in-python3-252334a8269a|Become a Master of String Formatting in Python3]] by Maxence LQ, Python in Plain English, 25/05/2021 |
| |
Références : | Références : |
Une fois l'utilisation achevée du fichier, il est important de fermer le fichier par la commande "f.close()" des erreurs peuvent subvenir sur le système de fichier si ce n'est pas fait correctement pour les fichiers en écriture surtout. | Une fois l'utilisation achevée du fichier, il est important de fermer le fichier par la commande "f.close()" des erreurs peuvent subvenir sur le système de fichier si ce n'est pas fait correctement pour les fichiers en écriture surtout. |
| |
Il est recommandé d'ouvrir le fichier en utilisant la commande "with", qui garantit la fermeture du fichier après exécution du code indenté, même en cas d'erreur : | **Il est recommandé d'ouvrir le fichier en utilisant la commande "with", qui garantit la fermeture du fichier après exécution du code indenté, même en cas d'erreur** : |
| |
<code python> | <code python> |
</code> | </code> |
| |
Les mots-clés du langage n'utilisent que les caractères du jeu historique ASCII. Un programme Python peut utiliser des chaînes de caractère utilisant un codage sur plus d'un octet (unicode). Python 3 utilisant des techniques différentes de Python 2 pour cela, et vu l'obsolescence progressive de cette dernière branche, les traitements particuliers de codage/décodage ne seront pas explicités. Sinon, //cf.// [[http://www.pythoncentral.io/python-unicode-encode-decode-strings-python-2x/|cette référence]]. | Les mots-clés du langage n'utilisent que les caractères du jeu historique ASCII. Un programme Python peut utiliser des chaînes de caractère utilisant un codage sur plus d'un octet (unicode). Python 3 utilisant des techniques différentes de Python 2 pour cela, et vu l'obsolescence de la branche 2, les traitements particuliers de codage/décodage ne seront pas explicités. |
| |
| ==== Références ==== |
| |
| * [[http://www.pythoncentral.io/python-unicode-encode-decode-strings-python-2x/]] (2013) |
| * [[https://realpython.com/courses/python-unicode/|Unicode in Python: Working With Character Encodings (9 Lessons)]], Real Python, Christopher Trudeau (2020) |
| |
| |
===== La complexité algorithmique ===== | ===== La complexité algorithmique ===== |
==== Conseils divers ==== | ==== Conseils divers ==== |
* [[https://levelup.gitconnected.com/10-python-tips-for-better-code-1bbffde3b44d|10 Python Tips For Better Code]] (Abhay Parashar, Medium, 17/12/2020) | * [[https://levelup.gitconnected.com/10-python-tips-for-better-code-1bbffde3b44d|10 Python Tips For Better Code]] (Abhay Parashar, Medium, 17/12/2020) |
| * [[https://somacdivad.medium.com/3-tips-for-writing-pythonic-code-b090956a6107|3 Tips For Writing Pythonic Code]] David Amos, Medium, 17/03/2022 |