15 - Astuces
- Itérer à la fois sur les indices et les éléments d’une liste ou les caractères d’une chaîne
- Calculer le quotient et le reste d’une division euclidienne en même temps
- Emoji dans Python
- Inputs multiples
- Échanger le contenu de deux variables
- Compréhensions de listes
- Nombre variable de paramètres d’une fonction
- Différentes façons d’entrer de passer des paramètres à une fonction
- Fonction retournant de multiples valeurs
- Créer une chaîne de caractère à partir des éléments d’une liste
- Afficher une chaîne de caractères plusieurs fois
- Inverser une liste ou une chaîne de caractère
- Obtenir une seule liste à partir d’une liste de listes
- Inverser les clés et les valeurs d’un dictionnaire
- Afficher votre version de Python
- Séparer des variables avec un symbole particulier lors de l’affichage
- Mettre en majuscule la première lettre de chaque mot
- For… Else
- Fusionner deux dictionnaires
- Python et le format JSON
- Définir une fonction avec le mot clé lambda
- Un langage proche du pseudocode
- Aficher la liste des méthodes liées à un objet
- Écrire et lire des grands nombres
Itérer à la fois sur les indices et les éléments d’une liste ou les caractères d’une chaîne
s = "Python"
e = enumerate(s)
print(list(e))
ma_liste = [12, -3, 1, 0, 17]
enum_ma_liste = enumerate(ma_liste)
print(list(enum_ma_liste))
for i, e in enumerate(ma_liste):
print(f"L'élément {e} a pour indice {i}")
[(0, 'P'), (1, 'y'), (2, 't'), (3, 'h'), (4, 'o'), (5, 'n')]
[(0, 12), (1, -3), (2, 1), (3, 0), (4, 17)]
L'élément 12 a pour indice 0
L'élément -3 a pour indice 1
L'élément 1 a pour indice 2
L'élément 0 a pour indice 3
L'élément 17 a pour indice 4
Calculer le quotient et le reste d’une division euclidienne en même temps
q, r = divmod(47, 5) # au lieu de q = 47 // 5 et r = 47 % 5
print(f"{q} {r}")
9 2
Emoji dans Python
import emoji
pouce = emoji.emojize(":thumbs_up:")
print(pouce)
print(emoji.emojize("Python est :thumbs_up:"))
print("\U0001F600")
👍
Python est 👍
😀
La liste des emojis disponibles via le module emoji de python : https://carpedm20.github.io/emoji/
Inputs multiples
a, b = input("Entrer deux nombres séparés par un espace : ").split()
print(f"{a = } et {b = }")
print(f"{a + b = }")
a = int(a) # On convertit une chaîne de caractères en nombre entier
b = int(b) # On convertit une chaîne de caractères en nombre entier
print(f"{a = } et {b = }")
print(f"{a + b = }")
Entrer deux nombres séparés par un espace : 15 25
a = '15' et b = '25'
a + b = '1525'
a = 15 et b = 25
a + b = 40
Échanger le contenu de deux variables
a = 1000
b = 500
print(f'{a = } et {b = }')
a, b = b, a # On échange les valeurs en une seule fois
print(f'{a = } et {b = }')
a = 1000 et b = 500
a = 500 et b = 1000
Compréhensions de listes
carres_impairs = [i**2 for i in range(11) if i % 2 == 1]
print(carres_impairs)
[1, 9, 25, 49, 81]
nombres = [1, 2, 3, 4, 5, 6, 7]
pairs = [x for x in nombres if x % 2 == 0]
impairs = [y for y in nombres if y not in pairs]
print(nombres)
print(pairs)
print(impairs)
[1, 2, 3, 4, 5, 6, 7]
[2, 4, 6]
[1, 3, 5, 7]
Nombre variable de paramètres d’une fonction
def somme_de_n_nombres(*a):
resultat = 0
for i in a:
resultat += i
return resultat
res = somme_de_n_nombres(1, 2, 3, 4, 5, 6, 7, 8, 9)
print(res)
45
Différentes façons d’entrer de passer des paramètres à une fonction
def ma_fonction(x, y, z):
print(f"{x} {y} {z}")
un_tuple = (1, 0, 1)
une_liste = [1, 0, 1]
un_dict = {'x': 1, 'y': 0, 'z': 1}
ma_fonction(1, 0, 1)
ma_fonction(*un_tuple)
ma_fonction(*une_liste)
ma_fonction(**un_dict)
1 0 1
1 0 1
1 0 1
1 0 1
Fonction retournant de multiples valeurs
# Définition de la fonction
def ma_fonction():
return 1, 2, 3, 4
# Appel de la fonction : on affecte ce que celle-ci renvoie à quatre variables
a, b, c, d = ma_fonction()
print(f"{a} {b} {c} {d}")
1 2 3 4
Créer une chaîne de caractère à partir des éléments d’une liste
a = ["Bonjour", "à", "tous"]
print(" ".join(a))
Bonjour à tous
Afficher une chaîne de caractères plusieurs fois
n = 3
a = "Bonjour"
b = "Bonjour "
print(a * n)
print(b * n)
BonjourBonjourBonjour
Bonjour Bonjour Bonjour
Inverser une liste ou une chaîne de caractère
ma_chaine = 'Bonjour'[::-1]
print(ma_chaine)
ma_liste = [4, 7, 1]
autre_liste = ma_liste[::-1]
print(autre_liste)
ruojnoB
[1, 7, 4]
Obtenir une seule liste à partir d’une liste de listes
ma_liste = [[1, 2, 3], [4, 5], [6], [7, 8], [9]]
# Première méthode
liste_applatie = []
for sous_liste in ma_liste:
for element in sous_liste:
liste_applatie.append(element)
# Deuxième méthode
liste_applatie2 = [element for sous_liste in ma_liste for element in sous_liste]
print(liste_applatie)
print(liste_applatie2)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Inverser les clés et les valeurs d’un dictionnaire
personnel = {'Physicienne': 'Lucille', 'Développeuse': 'Jeanne'}
personnel = {i: j for j, i in personnel.items()}
print(personnel)
{'Lucille': 'Physicienne', 'Jeanne': 'Développeuse'}
Afficher votre version de Python
import sys
print(sys.version_info)
# ou bien
print(sys.version)
sys.version_info(major=3, minor=13, micro=1, releaselevel='final', serial=0)
3.13.1 (main, Jan 25 2025, 10:51:29) [Clang 16.0.0 (clang-1600.0.26.6)]
Séparer des variables avec un symbole particulier lors de l’affichage
identifiant = "yves.farge"
domaine = "csilyon.fr"
print(f"{identifiant}@{domaine}")
yves.farge@csilyon.fr
Mettre en majuscule la première lettre de chaque mot
phrase = 'ceci est un bel article'
nouvelle_phrase = phrase.title()
print(phrase)
print(nouvelle_phrase)
ceci est un bel article
Ceci Est Un Bel Article
For… Else
La construction for / else est une particularité de Python, rare dans les autres langages.
def contient_des_nombres_pairs(L):
for elt in L:
if elt % 2 == 0:
print("La liste contient un nombre pair.")
break
else:
print("La liste ne contient pas de nombre pair.")
contient_des_nombres_pairs([11, 4, 17])
contient_des_nombres_pairs([11, 3, 17])
La liste contient un nombre pair.
La liste ne contient pas de nombre pair.
Fusionner deux dictionnaires
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
z = {**x, **y}
print(f"{z = }")
z = {'a': 1, 'b': 3, 'c': 4}
Python et le format JSON
JSON (JavaScript Object Notation) est un format texte d’échange de données, très utilisé sur le Web : la plupart des sites renvoient leurs données dans ce format. Un fichier JSON s’écrit presque comme un dictionnaire Python : des paires "clé": valeur entre accolades, des listes entre crochets, des chaînes toujours entre guillemets doubles. Les valeurs peuvent elles-mêmes être des listes ou des dictionnaires, ce qui permet de décrire des données imbriquées.
Le module json de Python passe d’un format à l’autre : json.load() lit un fichier JSON et renvoie un dictionnaire, json.dump() écrit un dictionnaire dans un fichier JSON.
Exemple de données au format JSON
Le fichier eleve.json décrit une élève :
{
"prénom": "Léa",
"nom": "Martin",
"classe": "1A",
"spécialités": ["NSI", "Mathématiques", "Physique-chimie"],
"notes": {"NSI": 16, "Mathématiques": 13.5}
}
Importer un fichier JSON en Python avec json.load()
import json
with open("eleve.json", "r", encoding="utf-8") as fichier:
eleve = json.load(fichier)
print(type(eleve))
print(f"{eleve['prénom']} suit {len(eleve['spécialités'])} spécialités.")
print(f"Note de NSI : {eleve['notes']['NSI']}")
<class 'dict'>
Léa suit 3 spécialités.
Note de NSI : 16
On accède ensuite aux données comme dans n’importe quel dictionnaire : eleve["notes"] est lui-même un dictionnaire, d’où les deux paires de crochets.
Enregistrer les données d’un dictionnaire Python sous forme d’un fichier JSON avec json.dump()
import json
classe = {"nom": "1A", "effectif": 32, "options": ["Latin", "Théâtre"]}
with open("classe.json", "w", encoding="utf-8") as fichier:
json.dump(classe, fichier, ensure_ascii=False, indent=2)
Le contenu du fichier classe.json est le suivant :
{
"nom": "1A",
"effectif": 32,
"options": [
"Latin",
"Théâtre"
]
}
Le paramètre indent=2 met une valeur par ligne, avec un retrait de deux espaces, pour rendre le fichier lisible. Le paramètre ensure_ascii=False garde les lettres accentuées telles quelles ; sans lui, "Théâtre" serait écrit "Th\u00e9\u00e2tre".
Définir une fonction avec le mot clé lambda
somme = lambda x, y: x + y
print(somme(3, 7))
10
print((lambda x, y: x + y)(3, 7))
10
Un langage proche du pseudocode
ma_liste = [True, True, False]
print(any(ma_liste))
print(all(ma_liste))
if any(ma_liste):
print("Au moins un des éléments est vrai")
if all(ma_liste):
print("Tous les éléments sont vrais")
if any(ma_liste) and not all(ma_liste):
print("Il y a au moins un élément vrai et un élément faux")
True
False
Au moins un des éléments est vrai
Il y a au moins un élément vrai et un élément faux
Aficher la liste des méthodes liées à un objet
print(dir(str))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Écrire et lire des grands nombres
a = 1000000000
b = 1_000_000_000
c = (a == b)
print(f"{a = }, {b = }, {c = }")
print(f"{a = :_}, {b = :_}, {c = }")
print(f"{a = :,} ; {b = :,}; {c = }")
d = str(f"{a:,}").replace(',', ' ')
print(f"{d = }")
a = 1000000000, b = 1000000000, c = True
a = 1_000_000_000, b = 1_000_000_000, c = True
a = 1,000,000,000 ; b = 1,000,000,000; c = True
d = '1 000 000 000'