15 - Astuces
Table des matières
- 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
- Image de fond dans Tkinter
- 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(q, r)
9 2
Image de fond dans Tkinter
import tkinter as tk
from PIL import ImageTk, Image
import os
racine = tk.Tk()
racine.title("Titre")
racine.geometry("1200x800")
img = ImageTk.PhotoImage(Image.open("/home/asterix/Downloads/img1.jpg"))
panel = tk.Label(racine, image = img)
panel.pack(side='top', fill='both', expand='yes')
# button = tk.Button(panel, text='button widget')
# button.pack(side='top', pady=5)
# save the panel's image from 'garbage collection'
label = tk.Label(panel, text="J'adore Python !")
bouton = tk.Button(panel, text="Quitter", command=racine.quit)
# bouton["fg"] = "red"
# bouton["bg"] = "yellow"
# racine["bg"] = "orange"
label.pack()
bouton.pack()
panel.image = img
racine.mainloop()
print("C'est fini !")
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(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(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)]
[Clang 12.0.0 (clang-1200.0.32.29)]
Séparer des variables avec un symbole particulier lors de l’affichage
identifiant = "yves.farge"
domaine = "csilyon.fr"
print(identifiant, domaine, sep = "@")
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 Objet Notation) est un langage léger d’échange de données textuelles (via un réseau, par exemple). Pour les ordinateurs, ce format se génère et s’analyse facilement. Pour les humains, il est pratique à écrire et à lire grâce à une syntaxe simple et à une structure en arborescence. JSON permet de représenter des données structurées (comme XML par exemple).
Exemple de données au format JSON
{
"firstName": "Jane",
"lastName": "Doe",
"hobbies": ["running", "sky diving", "singing"],
"age": 35,
"children": [
{
"firstName": "Alice",
"age": 6
},
{
"firstName": "Bob",
"age": 8
}
]
}
Importer un fichier JSON en Python avec json.load()
Sot le fichier file.json suivant :
{
"Name": "Jennifer Smith",
"Contact Number": 7867567898,
"Email": "jen123@gmail.com",
"Hobbies": ["Reading", "Sketching", "Horse Riding"]
}
Les données JSON sont formatées sous la forme d’un dictionnaire en Python :
import json
with open("file.json", "r") as fichier:
objet_json = json.load(fichier)
print(type(objet_json))
print(objet_json)
<class 'dict'>
{'Name': 'Jennifer Smith', 'Contact Number': 7867567898, 'Email': 'jen123@gmail.com', 'Hobbies': ['Reading', 'Sketching', 'Horse Riding']}
Enregistrer les donnés d’un dictionnaire Python sous forme d’un fichier JSON avec json.dump()
import json
dico = {"a": "01", "b": "11"}
with open('donnees.json', 'w') as fichier:
json.dump(dico, fichier)
Le contenu du fichier donnees.json est le suivant :
{"a": "01", "b": "11"}
Définir une fonction avec le mot clé lambda
somme = lambda x, y: x + y
print(somme(3, 7))
10
(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'