Variables et Opérations Arithmétiques
Cette section couvre les fondamentaux des variables et des opérations arithmétiques en Python, des concepts clés pour tout débutant en programmation.
Exemple 1 : Déclaration de Variables et Opérations de Base
# Déclaration de variables
a = 10
b = 5
# Opérations arithmétiques
somme = a + b
différence = a - b
produit = a * b
quotient = a / b
reste = a % b
# Affichage des résultats
print("Somme: ", somme)
print("Différence: ", différence)
print("Produit: ", produit)
print("Quotient: ", quotient)
print("Reste: ", reste)
Exemple 2 : Utilisation de Variables dans des Expressions Complexe
# Calcul d'une expression complexe
x = 4
y = 3
z = 2
resultat = (x + y) * z / (x - y)
# Affichage du résultat
print("Résultat de l'expression : ", resultat)
Les Structures Conditionnelles en Python
En Python, les structures conditionnelles permettent de diriger le flux d'exécution du code selon certaines conditions. Elles sont essentielles pour la prise de décision dans les programmes.
Syntaxe de base :
if condition:
# Instructions si la condition est vraie
else:
# Instructions si la condition est fausse
Exemples
Voici quelques exemples de code utilisant des structures conditionnelles réalisés en classe :
Exemple 1 : Calculatrice avec Opérateurs Arithmétiques
# Déclaration de variables et saisie utilisateur
var1 = int(input("Entrer la première valeur : "))
var2 = int(input("Entrer la deuxième valeur : "))
# Logique mathématique
s = var1 + var2
m = var1 - var2
t = var1 * var2 # Multiplication
# Structure conditionnelle
if var2 != 0:
d = int(var1 / var2)
p = var1 ** var2
mod = var1 % var2
print("{:d} / {:d} = {:d}".format(var1, var2, d))
print("{:d} ** {:d} = {:d}".format(var1, var2, p))
print("{:d} % {:d} = {:d}".format(var1, var2, mod))
else:
print("Erreur, la division par 0 est interdite")
# Affichage des résultats
print("{:d} + {:d} = {:d}".format(var1, var2, s))
print("{:d} - {:d} = {:d}".format(var1, var2, m))
print("{:d} * {:d} = {:d}".format(var1, var2, t))
Exemple 2 : Calcul de Mention pour les Notes du Bac
""" Mention du bac """
print("#" * 60)
print("#" * 7 + " Bienvenue dans le code de calcule de mention " + "#" * 7)
print("#" * 60)
name = input("Veuillez enter votre nom : ")
print(" Bonjour monsieur {:s}".format(name))
Note = float(input("Veuillez entrer votre note générale :"))
print("-" * 60 + "\n" + "Votre note est : {:.2f}".format(Note))
if 0 <= Note < 7:
print(" Malheureusement tu n'est pas concerné par le rattrapage revien l'année prochainne")
elif 7 <=Note < 10:
print(" Maleureusement, tu n'as pas réussie ton examen, mais tu as le rattrapage")
elif 10 <=Note <=20:
print("Bravoo tu as eu ton baccalauriat avec mention :",end=" " )
if Note < 12: mention="Passable"
elif 12 <=Note < 14:
mention = "Assez bien"
elif 14 <=Note < 16:
mention="Bien"
elif 16 <=Note < 18:
mention="Très bien"
elif 18<=Note:
mention="Excellent"
else:
mention="Erreur, la note entrer n'est pas valide"
print(mention)
Programme pour calculer la mention de note¶
""" Mention du bac """
print("#" * 60)
print("#" * 7 + " Bienvenue dans le code de calcule de mention " + "#" * 7)
print("#" * 60)
name = input("Veuillez enter votre nom : ")
print(" Bonjour monsieur {:s}".format(name))
Note = float(input("Veuillez entrer votre note générale :"))
print("-" * 60 + "\n" + "Votre note est : {:.2f}".format(Note))
if 0 <= Note < 7:
print(" Malheureusement tu n'est pas concerné par le rattrapage revien l'année prochainne")
elif 7 <= Note < 10:
print(" Maleureusement, tu n'as pas réussie ton examen, mais tu as le rattrapage")
elif 10 <= Note <=20:
print("Bravoo tu as eu ton baccalauriat avec mention :",end=" ")
if Note < 12:
mention = "Passable"
elif 12 <= Note < 14:
mention = "Assez bien"
elif 14 <= Note < 16:
mention = "Bien"
elif 16 <= Note < 18:
mention = "Très bien"
elif 18 <= Note:
mention = "Excellent"
else:
mention = "Erreur, la note entrer n'est pas valide"
print(mention)
Input : 421
############################################################
####### Bienvenue dans le code de calcule de mention #######
############################################################
Bonjour monsieur hamza
------------------------------------------------------------
Votre note est : 421.00
Erreur, la note entrer n'est pas valide
positive - Négative - Zéro¶
var = float(input("entre un nombre"))
print("Le nombre {:.2f} est ".format(var), end="")
if var < 0:
print("négative")
elif var > 0:
print("positive")
else:
print("zéro")
Le nombre 4.00 est positive
Les Boucles en Python¶
Les boucles en Python sont des structures de contrôle fondamentales utilisées pour répéter une série d'instructions. Elles sont extrêmement utiles pour parcourir des collections de données, exécuter des tâches répétitives et automatiser des processus. Python offre principalement deux types de boucles : for et while.
1. La Boucle For
La boucle for en Python est utilisée pour itérer sur une séquence (qui peut être une liste, un tuple, un dictionnaire, un ensemble ou une chaîne de caractères).
Syntaxe :
for valeur in sequence:
# Instructions à exécuter
Exemple :
for i in range(5):
print(i)
Cet exemple affiche les nombres de 0 à 4.
2. La Boucle While
La boucle while permet d'exécuter un ensemble d'instructions aussi longtemps qu'une condition est vraie.
Syntaxe :
while condition:
# Instructions à exécuter
Exemple :
i = 0
while i < 5:
print(i)
i += 1
Cet exemple affiche également les nombres de 0 à 4.
Contrôle des Boucles
Python propose également des instructions pour contrôler le flux des boucles :
break: Permet de sortir immédiatement de la boucle la plus interne.continue: Ignore le reste du code à l'intérieur de la boucle pour la itération courante et passe à l'itération suivante.else: Bloc de code exécuté après la fin de la boucle, sauf si la boucle est terminée par unbreak.
Quelques Examples :
In [ ]:
i = 0
while i < 10:
print("{:d} times me".format(i+1))
i += 1
print("Fin")
1 times me
2 times me
3 times me
4 times me
5 times me
6 times me
7 times me
8 times me
9 times me
10 times me
Fin
In [ ]:
for _ in range(0,11,1):
print("nta/i nadi/a")
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
nta/i nadi/a
In [ ]:
for _ in range(1,101,1):
print(_, end="\t")
if _ % 10 == 0:
print()
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
In [ ]:
for _ in range(1,101,2):
print(_,end="\t")
if _ % 9 == 0:
print()
1 3 5 7 9
11 13 15 17 19 21 23 25 27
29 31 33 35 37 39 41 43 45
47 49 51 53 55 57 59 61 63
65 67 69 71 73 75 77 79 81
83 85 87 89 91 93 95 97 99
In [ ]:
for _ in range(0,101,2):
print(_,end="\t")
if _ % 10 == 0:
print()
0
2 4 6 8 10
12 14 16 18 20
22 24 26 28 30
32 34 36 38 40
42 44 46 48 50
52 54 56 58 60
62 64 66 68 70
72 74 76 78 80
82 84 86 88 90
92 94 96 98 100
Guess the number Game¶
In [ ]:
n_secret = 10
inp = int(input("entrée un numéro si tu trouve le numéro secret tu gagnes"))
while inp != n_secret:
print("Le numéro entrée : {:d} n'est pas 10".format(inp))
inp = int(input("Veuillez entrée un nombre à nouveau :"))
print(" Bravooooo, le numéro entré est bien 10 : {:d}".format(n_secret))
Le numéro entrée : 1 n'est pas 10
Le numéro entrée : 2 n'est pas 10
Le numéro entrée : 2 n'est pas 10
Le numéro entrée : 5 n'est pas 10
Bravooooo, le numéro entré est bien 10 : 10
In [ ]:
import random as rd
n_secret = rd.randint(0,10)
inp = int(input("entrée un numéro si tu trouve le numéro secret tu gagnes"))
while inp != n_secret:
print("Le numéro entrée : {:d} n'est pas le secret".format(inp))
inp = int(input("Veuillez entrée un nombre à nouveau :"))
print(" Bravooooo, le numéro entré est bien le numéro secret : {:d}".format(n_secret))
Le numéro entrée : 7 n'est pas le secret
Le numéro entrée : 4 n'est pas le secret
Le numéro entrée : 5 n'est pas le secret
Le numéro entrée : 3 n'est pas le secret
Le numéro entrée : 6 n'est pas le secret
Le numéro entrée : 1 n'est pas le secret
Le numéro entrée : 9 n'est pas le secret
Le numéro entrée : 9 n'est pas le secret
Le numéro entrée : 0 n'est pas le secret
Le numéro entrée : 0 n'est pas le secret
Le numéro entrée : 8 n'est pas le secret
Le numéro entrée : 8 n'est pas le secret
Bravooooo, le numéro entré est bien le numéro secret : 2
Calculateur infinie¶
In [ ]:
while 1:
# Declaration de variable et input
var1 = int(input("Entrer la prmière valeur : "))
var2 = int(input("Entrer la deuxième valeur : "))
# Logique mathematique
s = var1 + var2
m = var1 - var2
t = var1 * var2 # Multiplication
# Condionelle
if var2 != 0:
d = int(var1 / var2)
p = var1 ** var2
mod = var1 % var2
print("{:d} / {:d} = {:d}".format(var1,var2,d))
print("{:d} ** {:d} = {:d}".format(var1,var2,p))
print("{:d} % {:d} = {:d}".format(var1,var2,mod))
else:
print(" Error, la division sur 0 est interdite")
if var1 != 0:
p = 1
print("{:d} ** {:d} = {:d}".format(var1,var2,p))
else:
print("Error, 0 ** 0 n'est pas autorisée")
# Affichage des Résultats
#print(str(var1) + " + " + str(var2) + " = " + str(s))
print("{:d} + {:d} = {:d}".format(var1,var2,s))
print("{:d} - {:d} = {:d}".format(var1,var2,m))
print("{:d} * {:d} = {:d}".format(var1,var2,t))
print("*"*60)
10 / 2 = 5
10 ** 2 = 100
10 % 2 = 0
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
************************************************************
1 / 5 = 0
1 ** 5 = 1
1 % 5 = 1
1 + 5 = 6
1 - 5 = -4
1 * 5 = 5
************************************************************
6 / 4 = 1
6 ** 4 = 1296
6 % 4 = 2
6 + 4 = 10
6 - 4 = 2
6 * 4 = 24
************************************************************
In [ ]:
"""Code pour calculer le factoriel de n entrer en input """
n = int(input("Entrez la valeur de \"n\": "))
r = 1 # initialisation de r et pour 0! =1
if n < 0:
print(" Erreur, le facorielle d'un numbre négative n'existe pas")
else:
for _ in range(n,0,-1):
r *= _
print("{:d}! = {:d}".format(n,r))
i = 0
while i < 10:
print("{:d} times me".format(i+1))
i += 1
print("Fin")
1 times me 2 times me 3 times me 4 times me 5 times me 6 times me 7 times me 8 times me 9 times me 10 times me Fin
for _ in range(0,11,1):
print("nta/i nadi/a")
nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a nta/i nadi/a
for _ in range(1,101,1):
print(_, end="\t")
if _ % 10 == 0:
print()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
for _ in range(1,101,2):
print(_,end="\t")
if _ % 9 == 0:
print()
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
for _ in range(0,101,2):
print(_,end="\t")
if _ % 10 == 0:
print()
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
Guess the number Game¶
n_secret = 10
inp = int(input("entrée un numéro si tu trouve le numéro secret tu gagnes"))
while inp != n_secret:
print("Le numéro entrée : {:d} n'est pas 10".format(inp))
inp = int(input("Veuillez entrée un nombre à nouveau :"))
print(" Bravooooo, le numéro entré est bien 10 : {:d}".format(n_secret))
Le numéro entrée : 1 n'est pas 10 Le numéro entrée : 2 n'est pas 10 Le numéro entrée : 2 n'est pas 10 Le numéro entrée : 5 n'est pas 10 Bravooooo, le numéro entré est bien 10 : 10
import random as rd
n_secret = rd.randint(0,10)
inp = int(input("entrée un numéro si tu trouve le numéro secret tu gagnes"))
while inp != n_secret:
print("Le numéro entrée : {:d} n'est pas le secret".format(inp))
inp = int(input("Veuillez entrée un nombre à nouveau :"))
print(" Bravooooo, le numéro entré est bien le numéro secret : {:d}".format(n_secret))
Le numéro entrée : 7 n'est pas le secret Le numéro entrée : 4 n'est pas le secret Le numéro entrée : 5 n'est pas le secret Le numéro entrée : 3 n'est pas le secret Le numéro entrée : 6 n'est pas le secret Le numéro entrée : 1 n'est pas le secret Le numéro entrée : 9 n'est pas le secret Le numéro entrée : 9 n'est pas le secret Le numéro entrée : 0 n'est pas le secret Le numéro entrée : 0 n'est pas le secret Le numéro entrée : 8 n'est pas le secret Le numéro entrée : 8 n'est pas le secret Bravooooo, le numéro entré est bien le numéro secret : 2
Calculateur infinie¶
while 1:
# Declaration de variable et input
var1 = int(input("Entrer la prmière valeur : "))
var2 = int(input("Entrer la deuxième valeur : "))
# Logique mathematique
s = var1 + var2
m = var1 - var2
t = var1 * var2 # Multiplication
# Condionelle
if var2 != 0:
d = int(var1 / var2)
p = var1 ** var2
mod = var1 % var2
print("{:d} / {:d} = {:d}".format(var1,var2,d))
print("{:d} ** {:d} = {:d}".format(var1,var2,p))
print("{:d} % {:d} = {:d}".format(var1,var2,mod))
else:
print(" Error, la division sur 0 est interdite")
if var1 != 0:
p = 1
print("{:d} ** {:d} = {:d}".format(var1,var2,p))
else:
print("Error, 0 ** 0 n'est pas autorisée")
# Affichage des Résultats
#print(str(var1) + " + " + str(var2) + " = " + str(s))
print("{:d} + {:d} = {:d}".format(var1,var2,s))
print("{:d} - {:d} = {:d}".format(var1,var2,m))
print("{:d} * {:d} = {:d}".format(var1,var2,t))
print("*"*60)
10 / 2 = 5 10 ** 2 = 100 10 % 2 = 0 10 + 2 = 12 10 - 2 = 8 10 * 2 = 20 ************************************************************ 1 / 5 = 0 1 ** 5 = 1 1 % 5 = 1 1 + 5 = 6 1 - 5 = -4 1 * 5 = 5 ************************************************************ 6 / 4 = 1 6 ** 4 = 1296 6 % 4 = 2 6 + 4 = 10 6 - 4 = 2 6 * 4 = 24 ************************************************************
"""Code pour calculer le factoriel de n entrer en input """
n = int(input("Entrez la valeur de \"n\": "))
r = 1 # initialisation de r et pour 0! =1
if n < 0:
print(" Erreur, le facorielle d'un numbre négative n'existe pas")
else:
for _ in range(n,0,-1):
r *= _
print("{:d}! = {:d}".format(n,r))
Les Fonctions, Bibliothèques et Modules en Python
Les fonctions, les bibliothèques et les modules sont des éléments clés en Python qui permettent de structurer et de réutiliser le code efficacement.
Fonctions
Une fonction est un bloc de code réutilisable conçu pour effectuer une action spécifique.
Syntaxe de base d'une fonction :
def nom_de_la_fonction(paramètres):
# Corps de la fonction
Exemple :
def saluer(nom):
return "Bonjour, " + nom
print(saluer("Alice"))
Bibliothèques et Modules
Les modules sont des fichiers Python contenant un ensemble de fonctions et de variables, tandis que les bibliothèques sont des collections de modules.
Importation d'un module :
import nom_du_module
Exemple :
import math
# Utilisation de la fonction sqrt (racine carrée) du module math
print(math.sqrt(16))
Exercices
- Créez une fonction qui prend deux nombres en paramètres et renvoie leur somme.
- Importez le module
datetimeet affichez la date actuelle. - Écrivez une fonction qui prend une liste de nombres et renvoie leur moyenne.
Solutions
Fonction pour calculer la somme de deux nombres :¶
La fonction somme prend deux paramètres, nombre1 et nombre2, et renvoie leur somme. En Python, cela peut être écrit comme suit :
def somme(nombre1, nombre2):
return nombre1 + nombre2
somme(1,2)
Cette fonction utilise l'opérateur d'addition + pour calculer la somme des deux nombres et renvoie le résultat.
Importer le module datetime et afficher la date actuelle :¶
Pour afficher la date actuelle en Python, vous devez d'abord importer le module datetime. Ensuite, vous pouvez utiliser la fonction date.today() pour obtenir la date actuelle. Voici comment cela peut être fait :
import datetime
date_actuelle = datetime.date.today()
print("La date actuelle est :", date_actuelle)
La date actuelle est : 2024-01-19
Cette portion de code affiche la date actuelle au moment de son exécution.
Fonction pour calculer la moyenne d'une liste de nombres :¶
La fonction moyenne prend une liste de nombres en paramètre et renvoie leur moyenne. Voici comment elle peut être implémentée :
def moyenne(liste_nombres):
somme_nombres = sum(liste_nombres)
nombre_elements = len(liste_nombres)
return somme_nombres / nombre_elements
moyenne([1,2,3,4,5,6,1,5,44,65,454])
53.63636363636363
Cette fonction utilise la fonction sum() pour calculer la somme des nombres dans la liste et len() pour obtenir le nombre d'éléments dans la liste. La moyenne est ensuite calculée en divisant la somme totale par le nombre d'éléments.
Autre Exemples
def printing(pc_c, usr_c, msg_g, s_p, s_u, rnd):
"""
Affiche les informations de chaque tour dans le jeu pierre-papier-ciseaux.
Args:
pc_c (str): Choix de l'ordinateur ('r' pour rock, 'p' pour paper, 's' pour scissors).
usr_c (str): Choix de l'utilisateur ('r' pour rock, 'p' pour paper, 's' pour scissors).
msg_g (str): Message indiquant le gagnant du tour.
s_p (int): Score de l'ordinateur.
s_u (int): Score de l'utilisateur.
rnd (int): Numéro du tour actuel.
Cette fonction imprime le choix de l'ordinateur et de l'utilisateur, le résultat du tour,
ainsi que le score actuel.
"""
print(f" Tour N°: {rnd}")
print(f"L'ordinateur a choisi {pc_c}")
print(f"L'utilisateur a choisi {usr_c}")
print(f"Donc {msg_g}")
print("Le score maintenant est : \n| User \t| vs. |\t PC |")
print("-"*21)
print(f"| {s_u} \t| vs. |\t {s_p} |")
print("-" * 21)
main.py
import random as rd
from jeu_utils import printing
# Initialisation des scores
score_u, score_p = 0, 0
c = 0 # Compteur de tours
while score_u < 3 and score_p < 3:
c_l = ["r", "p", "s"] # les choix possibles
pc = rd.choice(c_l) # choix aléatoire du pc
usr = input("Veuillez entrer votre choix (pierre \"r\", papier \"p\", ou ciseaux \"s\"): ")
if usr not in c_l: # si le choix n'est pas un des proposés
print("Erreur, veuillez entrer une réponse valide.")
continue
c += 1
# Règles du jeu pour déterminer le gagnant
pc_g = (pc == "r" and usr == "s")
pc_g = pc_g or (pc == "s" and usr == "p")
pc_g = pc_g or (pc == "p" and usr == "r")
usr_g = (pc == "s" and usr == "r")
usr_g = usr_g or (pc == "r" and usr == "p")
usr_g = usr_g or (pc == "p" and usr == "s")
# Messages selon le résultat du tour
msg = ["Tu as gagné ce rond", "L'ordinateur a gagné ce rond", "C'est une égalité"]
if usr_g:
score_u += 1
printing(pc, usr, msg[0], score_p, score_u, c)
elif pc_g:
score_p += 1
printing(pc, usr, msg[1], score_p, score_u, c)
else:
printing(pc, usr, msg[2], score_p, score_u, c)
print("=" * 50)
# Affichage du résultat final
msg2 = "Bravo, Tu as gagné!" if score_u >= 3 else "Tu as perdu."
print("#" * 60)
print(msg2)
print("-" * 50)
print("Le score final est : \n| User \t| vs. |\t PC |")
print("-" * 21)
print(f"| {score_u} \t| vs. |\t {score_p} |")
print("-" * 21)
Erreur, veuillez entrer une réponse valide. Tour N°: 1 L'ordinateur a choisi p L'utilisateur a choisi r Donc L'ordinateur a gagné ce rond Le score maintenant est : | User | vs. | PC | --------------------- | 0 | vs. | 1 | --------------------- ================================================== Tour N°: 2 L'ordinateur a choisi s L'utilisateur a choisi p Donc L'ordinateur a gagné ce rond Le score maintenant est : | User | vs. | PC | --------------------- | 0 | vs. | 2 | --------------------- ================================================== Tour N°: 3 L'ordinateur a choisi r L'utilisateur a choisi r Donc C'est une égalité Le score maintenant est : | User | vs. | PC | --------------------- | 0 | vs. | 2 | --------------------- ================================================== Tour N°: 4 L'ordinateur a choisi s L'utilisateur a choisi r Donc Tu as gagné ce rond Le score maintenant est : | User | vs. | PC | --------------------- | 1 | vs. | 2 | --------------------- ================================================== Tour N°: 5 L'ordinateur a choisi p L'utilisateur a choisi r Donc L'ordinateur a gagné ce rond Le score maintenant est : | User | vs. | PC | --------------------- | 1 | vs. | 3 | --------------------- ================================================== ############################################################ Tu as perdu. -------------------------------------------------- Le score final est : | User | vs. | PC | --------------------- | 1 | vs. | 3 | ---------------------
Listes, Tuples et Dictionnaires en Python
Les Listes en Python
Une liste en Python est une structure de données qui peut contenir une séquence d'éléments. Chaque élément peut être de n'importe quel type de données, et une liste peut même contenir des éléments de différents types.
Syntaxe de Base
Syntaxe : ma_liste = [élément1, élément2, ...]
Méthodes des Listes
Les listes en Python offrent une variété de méthodes utiles :
- append(x) : Ajoute un élément à la fin de la liste.
- insert(i, x) : Insère un élément à une position donnée.
- remove(x) : Supprime le premier élément dont la valeur est x.
- pop([i]) : Supprime l'élément à la position donnée et le renvoie.
- clear() : Supprime tous les éléments de la liste.
- index(x) : Renvoie l'index du premier élément dont la valeur est x.
- count(x) : Renvoie le nombre de fois que x apparaît dans la liste.
- sort() : Trie les éléments de la liste.
- reverse() : Inverse l'ordre des éléments de la liste.
- copy() : Renvoie une copie de la liste.
Exemples d'Utilisation
Voici quelques exemples montrant comment utiliser ces méthodes :
# Création d'une liste
ma_liste = [1, 2, 3]
# Ajout d'un élément
ma_liste.append(4)
# Insertion d'un élément
ma_liste.insert(1, 1.5)
# Suppression d'un élément
ma_liste.remove(2)
# Utilisation de pop
element = ma_liste.pop(1)
# Affichage de la liste modifiée
print(ma_liste)
Exercices
- Créez une liste contenant les noms de cinq villes.
- Ajoutez un autre nom de ville à cette liste en utilisant la méthode
append. - Supprimez le troisième élément de la liste.
- Triez la liste en ordre alphabétique.
- Créez une deuxième liste et combinez-la avec la première liste en utilisant l'opérateur
+.
Les Tuples en Python
Un tuple est une collection ordonnée et immuable d'éléments en Python. Ils sont souvent utilisés pour stocker des collections d'éléments hétérogènes.
Syntaxe de Base
Syntaxe : mon_tuple = (élément1, élément2, ...)
Méthodes des Tuples
Les tuples ont moins de méthodes que les listes, étant donné leur immuabilité. Les méthodes principales sont :
- count(x) : Compte le nombre d'occurrences de x dans le tuple.
- index(x) : Trouve la première occurrence de x dans le tuple.
Exemples d'Utilisation
Voici quelques exemples d'utilisation de tuples :
# Création d'un tuple
mon_tuple = (1, 2, 3, 2)
# Utilisation de count
nombre_de_deux = mon_tuple.count(2)
# Utilisation de index
index_de_trois = mon_tuple.index(3)
# Affichage des résultats
print("Nombre de '2' dans le tuple :", nombre_de_deux)
print("Index de '3' dans le tuple :", index_de_trois)
Exercices
- Créez un tuple contenant différents types de données (nombre, texte, booléen).
- Déterminez le nombre d'occurrences d'un élément spécifique dans ce tuple.
- Trouvez l'index d'un élément donné dans le tuple.
Les Dictionnaires en Python
Un dictionnaire en Python est une structure de données qui stocke des paires clé-valeur. Les dictionnaires sont mutables, ce qui signifie que vous pouvez ajouter, modifier et supprimer leurs éléments.
Syntaxe de Base
Syntaxe : mon_dictionnaire = {'clé1': valeur1, 'clé2': valeur2, ...}
Méthodes des Dictionnaires
Les dictionnaires en Python offrent diverses méthodes utiles :
- get(clé) : Retourne la valeur pour une clé donnée.
- items() : Retourne une vue de toutes les paires clé-valeur.
- keys() : Retourne une vue de toutes les clés.
- values() : Retourne une vue de toutes les valeurs.
- pop(clé) : Supprime la paire clé-valeur avec la clé spécifiée.
- update({autre_dictionnaire}) : Met à jour le dictionnaire avec les éléments d'un autre dictionnaire.
Exemples d'Utilisation
Voici quelques exemples montrant comment utiliser ces méthodes :
# Création d'un dictionnaire
mon_dictionnaire = {'pomme': 10, 'banane': 5}
# Utilisation de get
nombre_de_pommes = mon_dictionnaire.get('pomme')
# Ajout d'un élément
mon_dictionnaire['orange'] = 3
# Utilisation de pop
mon_dictionnaire.pop('banane')
# Affichage du dictionnaire modifié
print(mon_dictionnaire)
Exercices
- Créez un dictionnaire représentant un stock d'articles avec leur quantité.
- Ajoutez un nouvel article avec sa quantité au dictionnaire.
- Mettez à jour la quantité d'un article existant.
- Supprimez un article du dictionnaire.
- Utilisez la méthode
items()pour afficher tous les articles et leurs quantités.
Autres Exercices
Exercice 1¶
Partie I: Manipulation d'une Liste de Fruits¶
- Objectif
Apprendre à manipuler des listes en Python, notamment en ajoutant, triant, inversant et modifiant des éléments de la liste.
-
Description de l'Exercice
-
Initialisation de la Liste des Fruits: Créez une liste
Fruitscontenant une sélection de vos fruits préférés. -
Fonction d'Ajout de Fruits: Écrivez une fonction
add2qui ajoute deux nouveaux fruits à la liste. La fonction doit créer une copie de la liste originale pour éviter de la modifier directement. -
Ajout de Nouveaux Fruits et Affichage: Utilisez
add2pour ajouter 'Fraise' et 'Orange' à la listeFruits. Affichez ensuite la nouvelle liste. -
Tri et Inversion de la Liste: Triez la liste par ordre alphabétique, puis inversez-la. Affichez la liste après chaque opération.
-
Modification d'un Élément de la Liste: Changez le troisième élément de la liste en 'Indéfini' et affichez la liste modifiée.
-
Affichage de la Liste Originale: Affichez la liste originale pour montrer qu'elle reste inchangée après toutes les modifications.
-
# Initialiser une liste de fruits
Fruits = ["Pastèque", "Pomme", "Banane", "Pêche"]
# Définir une fonction pour ajouter deux nouveaux fruits à une liste donnée
def add2(var: list, arg1, arg2):
# Copier la liste originale pour éviter de la modifier directement
temp = var.copy()
# Ajouter le premier nouveau fruit à la liste copiée
temp.append(arg1)
# Ajouter le second nouveau fruit à la liste copiée
temp.append(arg2)
# Retourner la liste modifiée
return temp
# Utiliser la fonction add2 pour ajouter 'Fraise' et 'Orange' à la liste
Fruits2 = add2(Fruits, "Fraise", "Orange")
# Afficher la nouvelle liste avec les fruits ajoutés
print(Fruits2)
# Trier la nouvelle liste par ordre alphabétique
Fruits2.sort()
# Afficher la liste triée
print(Fruits2)
# Inverser l'ordre de la liste triée
Fruits2.reverse()
# Afficher la liste inversée
print(Fruits2)
# Afficher la liste originale pour montrer qu'elle reste inchangée
print(Fruits)
# Modifier le troisième élément (index 2) de la liste en 'Indéfini'
Fruits2[2] = "Indéfini"
# Afficher la liste modifiée
print(Fruits2)
['Pastèque', 'Pomme', 'Banane', 'Pêche', 'Fraise', 'Orange'] ['Banane', 'Fraise', 'Orange', 'Pastèque', 'Pomme', 'Pêche'] ['Pêche', 'Pomme', 'Pastèque', 'Orange', 'Fraise', 'Banane'] ['Pastèque', 'Pomme', 'Banane', 'Pêche'] ['Pêche', 'Pomme', 'Indéfini', 'Orange', 'Fraise', 'Banane']
Partie II: Gestion Avancée d'une Liste de Fruits¶
- Objectif
Approfondir la compréhension et la manipulation des listes en Python en ajoutant, retirant, affichant et comptant les éléments d'une liste. L'exercice implique l'utilisation de fonctions pour réaliser ces opérations.
-
Description de l'Exercice
-
Initialisation de la Liste des Fruits: Commencez avec une liste
Fruitscontenant vos fruits préférés. -
Fonctions de Manipulation de la Liste:
- Écrivez une fonction
ajouter_fruitpour ajouter un fruit à la liste, si ce n'est pas déjà fait. - Créez une fonction
retirer_fruitpour retirer un fruit de la liste, s'il existe. - Développez une fonction
afficher_listepour afficher tous les fruits dans la liste de manière conviviale. - Implementez une fonction
compter_fruitpour compter et afficher le nombre de fois qu'un fruit spécifique apparaît dans la liste.
- Écrivez une fonction
-
Utilisation des Fonctions:
- Ajoutez des fruits en utilisant
ajouter_fruit. - Retirez un fruit en utilisant
retirer_fruit. - Affichez la liste mise à jour avec
afficher_liste. - Comptez les occurrences d'un fruit spécifique avec
compter_fruit.
- Ajoutez des fruits en utilisant
-
Tri et Autres Opérations (Optionnel): Vous pouvez ajouter d'autres manipulations telles que le tri ou l'inversion de la liste, selon les besoins.
-
# Initialiser une liste de fruits
Fruits = ["Pastèque", "Pomme", "Banane", "Pêche"]
def ajouter_fruit(var: list, fruit):
"""Ajouter un fruit à la liste s'il n'est pas déjà présent."""
if fruit in var:
print(f"{fruit} est déjà dans la liste.")
else:
var.append(fruit)
def retirer_fruit(var: list, fruit):
"""Retirer un fruit de la liste s'il existe."""
if fruit in var:
var.remove(fruit)
else:
print(f"{fruit} n'est pas trouvé dans la liste.")
def afficher_liste(var: list):
"""Afficher la liste des fruits dans un format convivial."""
print("Liste actuelle des fruits :")
for fruit in var:
print(f" - {fruit}")
def compter_fruit(var: list, fruit):
"""Compter et afficher le nombre de fois qu'un fruit apparaît dans la liste."""
compte = var.count(fruit)
print(f"{fruit} apparaît {compte} fois dans la liste.")
# Ajouter des fruits en utilisant la nouvelle fonction
ajouter_fruit(Fruits, "Fraise")
ajouter_fruit(Fruits, "Orange")
ajouter_fruit(Fruits, "Pomme") # Cela devrait afficher un message indiquant qu'il est déjà dans la liste
# Retirer un fruit
retirer_fruit(Fruits, "Banane")
# Afficher la liste
afficher_liste(Fruits)
# Compter les occurrences d'un fruit
compter_fruit(Fruits, "Pomme")
# Le reste de votre code existant peut rester ici pour le tri, l'inversion, etc.
Pomme est déjà dans la liste. Liste actuelle des fruits : - Pastèque - Pomme - Pêche - Fraise - Orange Pomme apparaît 1 fois dans la liste.
Exercice 2 :¶
- Objectif
Apprendre à manipuler un tuple contenant une variété de types de données en Python. L'exercice se concentre sur l'accès, l'extraction et la modification des éléments d'un tuple mixte.
-
Description de l'Exercice
-
Création d'un Tuple Mixte: Définissez un tuple
mixed_tuplecontenant un mélange de types de données tels que des entiers, des chaînes de caractères, des listes et d'autres tuples. -
Accès et Extraction des Éléments:
- Affichez le tuple complet.
- Accédez aux éléments individuels du tuple par leur indice.
- Extrayez une sous-séquence du tuple en utilisant la technique de slicing.
- Manipulation d'Éléments Complexes:
- Accédez à un élément d'une liste à l'intérieur du tuple.
- Accédez à un élément d'un sous-tuple à l'intérieur du tuple principal.
- Modifiez un élément mutable (liste) à l'intérieur du tuple.
-
# Créer un tuple avec des types de données mixtes
mixed_tuple = (42, "Bonjour", 3.14, [1, 2, 3], ("a", "b", "c"))
# Afficher le tuple entier
print("Le tuple entier :", mixed_tuple)
# Accéder aux éléments par indice
print("Premier élément (entier) :", mixed_tuple[0])
print("Deuxième élément (chaîne de caractères) :", mixed_tuple[1])
print("Dernier élément (tuple) :", mixed_tuple[-1])
# Extraire les éléments de l'indice 1 à 3
print("Extrait de l'indice 1 à 3 :", mixed_tuple[1:4])
# Accéder à un élément de la liste dans le tuple
print("Deuxième élément de la liste dans le tuple :", mixed_tuple[3][1])
# Accéder à une valeur du dictionnaire dans le tuple
# Note : Il semble y avoir une erreur ici, car le dernier élément du tuple est un autre tuple, pas un dictionnaire.
# Je vais donc corriger cela pour accéder au troisième élément du sous-tuple.
print("Troisième valeur du sous-tuple dans le tuple :", mixed_tuple[4][2])
# Modifier un élément mutable dans le tuple
mixed_tuple[3].append(4)
print("Liste modifiée dans le tuple :", mixed_tuple[3])
Le tuple entier : (42, 'Bonjour', 3.14, [1, 2, 3], ('a', 'b', 'c'))
Premier élément (entier) : 42
Deuxième élément (chaîne de caractères) : Bonjour
Dernier élément (tuple) : ('a', 'b', 'c')
Extrait de l'indice 1 à 3 : ('Bonjour', 3.14, [1, 2, 3])
Deuxième élément de la liste dans le tuple : 2
Troisième valeur du sous-tuple dans le tuple : c
Liste modifiée dans le tuple : [1, 2, 3, 4]
Exercice 3: Manipulation de Tuples et de Structures de Données Mixtes¶
- Objectif
Cet exercice est conçu pour développer vos compétences en manipulation de tuples et en gestion de structures de données mixtes. Vous apprendrez comment itérer sur ces structures et comment accéder à leurs éléments. Description de l'Exercice
-
Gestion de Données Personnalisées:
- Vous avez une structure de données nommée personal_info, qui contient des informations personnelles (nom, âge, sexe) sous forme de tuples et de listes.
- Affichez la longueur du premier élément de personal_info.
- Identifiez et affichez le type de la structure de données personal_info et de son premier élément.
- Itérez sur chaque caractère du cinquième élément de personal_info et affichez-les.
- Itérez sur chaque élément de personal_info et affichez-le.
-
Exploration d'un Tuple Numérique:
- Créez un tuple number_range qui contient des nombres de 1 à 100.
- Parcourez ce tuple, affichez chaque nombre et insérez un saut de ligne après chaque dixième nombre pour une meilleure lisibilité.
# Définition d'une structure de données mixtes contenant des informations personnelles
# Cette structure est un mélange de listes et de tuples
personal_info = (["Hamza", 31, "M"], ("Mohamed", 28, "M"), ["Aissa", 18, "M"], ("Sawssan", 21, "F"), "zineb")
# Afficher la longueur du premier élément (une liste) dans 'personal_info'
print(len(personal_info[0]))
# Afficher le type de la structure de données 'personal_info' (tuple)
print(type(personal_info))
# Afficher le type du premier élément de 'personal_info' (liste)
print(type(personal_info[0]))
# Itération sur chaque caractère du cinquième élément (une chaîne) de 'personal_info'
for character in personal_info[4]:
print(character)
# Itération sur chaque élément de 'personal_info' et affichage de chaque élément
for info in personal_info:
print(info)
# Création d'un tuple contenant des nombres de 1 à 100
number_range = tuple(range(1, 101))
# Itération sur chaque nombre dans 'number_range'
# Affichage de chaque nombre, suivi d'une tabulation
# Après chaque dixième nombre, insertion d'un saut de ligne pour une meilleure lisibilité
for number in number_range:
print(number, end="\t")
if number % 10 == 0:
print()
3
<class 'tuple'>
<class 'list'>
z
i
n
e
b
['Hamza', 31, 'M']
('Mohamed', 28, 'M')
['Aissa', 18, 'M']
('Sawssan', 21, 'F')
zineb
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
Exercice 4: Manipulation de Dictionnaires pour la Gestion des Notes Scolaires¶
- Objectif
Développer des compétences en manipulation de dictionnaires, en se concentrant sur la gestion des notes scolaires, à la manière marocaine plutôt qu'américaine. L'exercice couvre l'ajout, la mise à jour, la suppression et la recherche de données dans un dictionnaire.
-
Description de l'Exercice
-
Initialisation du Dictionnaire des Notes: Créez un dictionnaire
notes_etudiantspour stocker les notes des étudiants. Chaque clé est un tuple contenant l'identifiant de l'étudiant et le semestre, et chaque valeur est la note obtenue. -
Ajout et Mise à Jour des Notes: Ajoutez une nouvelle note pour un étudiant et mettez à jour la note d'un étudiant existant.
-
Suppression d'une Note: Supprimez la note d'un étudiant spécifique.
-
Recherche d'une Note: Recherchez la note d'un étudiant en utilisant la méthode
get. -
Itération sur les Notes: Itérez sur le dictionnaire pour afficher les détails des notes.
-
Vérification de l'Existence d'une Note: Vérifiez si une note spécifique d'un étudiant est enregistrée.
-
Obtention de Toutes les Clés et Valeurs: Récupérez toutes les clés et toutes les valeurs du dictionnaire.
-
# Initialisation du dictionnaire des notes d'étudiants
notes_etudiants = {
(12345, 'Automne 2021'): '18',
(67890, 'Printemps 2021'): '15',
(13579, 'Automne 2021'): '17'
}
print(notes_etudiants)
# Ajouter une nouvelle note d'étudiant
notes_etudiants[(24680, 'Automne 2021')] = '16'
print(notes_etudiants)
# Mettre à jour une note pour une entrée existante
notes_etudiants[(12345, 'Automne 2021')] = '19'
print(notes_etudiants)
# Supprimer une entrée
del notes_etudiants[(67890, 'Printemps 2021')]
# Rechercher la note d'un étudiant
note = notes_etudiants.get((12345, 'Automne 2021'), 'Non trouvée')
print(note)
# Itérer sur toutes les entrées
for key, value in notes_etudiants.items():
id_etudiant, semestre = key
note = value
print(f'ID Étudiant: {id_etudiant}, Semestre: {semestre}, Note: {note}')
# Vérifier si une note d'étudiant est enregistrée
if (12345, 'Automne 2021') in notes_etudiants:
print("La note de l'étudiant est enregistrée.")
else:
print("La note de l'étudiant n'est pas enregistrée.")
# Obtenir toutes les clés ou toutes les valeurs
toutes_les_cles = notes_etudiants.keys()
toutes_les_valeurs = notes_etudiants.values()
print(toutes_les_cles)
print(toutes_les_valeurs)
{(12345, 'Automne 2021'): '18', (67890, 'Printemps 2021'): '15', (13579, 'Automne 2021'): '17'}
{(12345, 'Automne 2021'): '18', (67890, 'Printemps 2021'): '15', (13579, 'Automne 2021'): '17', (24680, 'Automne 2021'): '16'}
{(12345, 'Automne 2021'): '19', (67890, 'Printemps 2021'): '15', (13579, 'Automne 2021'): '17', (24680, 'Automne 2021'): '16'}
19
ID Étudiant: 12345, Semestre: Automne 2021, Note: 19
ID Étudiant: 13579, Semestre: Automne 2021, Note: 17
ID Étudiant: 24680, Semestre: Automne 2021, Note: 16
La note de l'étudiant est enregistrée.
dict_keys([(12345, 'Automne 2021'), (13579, 'Automne 2021'), (24680, 'Automne 2021')])
dict_values(['19', '17', '16'])
Exercice 5: Création et Gestion d'un Carnet d'Adresses Téléphoniques¶
- Objectif
Apprendre à manipuler un dictionnaire en Python pour créer et gérer un carnet d'adresses téléphoniques. Cet exercice implique l'ajout de nouveaux contacts, la vérification des formats de numéros, et la gestion des doublons.
-
Description de l'Exercice
-
Initialisation du Carnet d'Adresses: Créez un dictionnaire
carnet_adressesavec des noms comme clés et des numéros de téléphone comme valeurs. -
Fonction d'Ajout de Contact: Écrivez une fonction
ajouter_contactpour ajouter de nouveaux contacts au carnet. Cette fonction doit vérifier le format du numéro de téléphone et l'existence du contact. -
Utilisation de la Fonction: Testez la fonction
ajouter_contacten ajoutant de nouveaux contacts et en essayant d'ajouter un contact déjà existant. -
Affichage du Carnet d'Adresses: Après modification, affichez le carnet d'adresses pour voir les changements.
-
# Carnet d'adresses initial
carnet_adresses = {
"Fatima Zahra El Mahdi": "+212 612 345678",
"Youssef Amrani": "+212 613 876543",
"Amina Belkadi": "+212 537 123456"
}
# Fonction pour ajouter un nouveau contact au carnet d'adresses
def ajouter_contact(carnet_adresses, nom, numero):
# Vérification si le numéro commence par +212
if not numero.startswith("+212"):
print(f"Numéro de téléphone invalide pour {nom}. Il doit commencer par '+212'.")
return
# Vérification si le contact existe déjà
if nom in carnet_adresses:
print(f"{nom} figure déjà dans le carnet d'adresses avec le numéro {carnet_adresses[nom]}.")
else:
carnet_adresses[nom] = numero
print(f"Contact {nom} ajouté avec le numéro {numero}.")
# Exemple d'utilisation :
ajouter_contact(carnet_adresses, "Mohammed Alami", "+212 614 567890")
ajouter_contact(carnet_adresses, "Fatima Zahra El Mahdi", "+212 615 987654") # Indique que Fatima Zahra El Mahdi existe déjà
# Affichage du carnet d'adresses mis à jour
print("Carnet d'adresses mis à jour :", carnet_adresses)
Contact Mohammed Alami ajouté avec le numéro +212 614 567890.
Fatima Zahra El Mahdi figure déjà dans le carnet d'adresses avec le numéro +212 612 345678.
Carnet d'adresses mis à jour : {'Fatima Zahra El Mahdi': '+212 612 345678', 'Youssef Amrani': '+212 613 876543', 'Amina Belkadi': '+212 537 123456', 'Mohammed Alami': '+212 614 567890'}
Exercice Complimentaire : Création d'un Annuaire d'Élèves et Calcul de la Moyenne Générale (Niveau moyen à avancer)¶
- Description
Imaginez un annuaire d'élèves sous forme de liste de listes, où chaque sous-liste représente un élève et contient son nom, prénom, âge, sexe, un dictionnaire de notes pour différentes matières et sa ville. Vous devez ensuite écrire une fonction pour calculer la moyenne générale de chaque élève en fonction de ses notes.
-
Consignes
- Créez un annuaire d'élèves nommé
Annuaire. Chaque élève doit être représenté par une liste contenant son nom, prénom, âge, sexe, un dictionnaire des notes, et la ville. Exemple :Annuaire = [ ["nom", "prénom", "age", "sexe", "Notes", "Ville"], ["Dupont", "Jean", 20, "M", {"Math": 15, "PC": 14, "SVT": 13, "Ph": 12, "Eng": 10}, "Paris"], # Ajoutez d'autres élèves ici ]
-
Écrivez une fonction Note_g qui prend en entrée un dictionnaire de notes d'un élève et retourne sa moyenne générale. Les coefficients des matières sont : Mathématiques - 7, Physique-Chimie (PC) - 7, Sciences de la Vie et de la Terre (SVT) - 5, Philosophie (Ph) - 2, Anglais (Eng) - 2.
-
Ajoutez une colonne "Note Générale" à votre annuaire et calculez la moyenne générale pour chaque élève en utilisant la fonction Note_g.
-
Imprimez l'annuaire mis à jour avec les moyennes générales pour chaque élève.**
- Créez un annuaire d'élèves nommé
Annuaire = [
["Nom", "Prénom", "Age", "Sexe", "Notes", "Ville"],
["El Aoufi", "Hassan", 19, "M", {"Math": 16, "PC": 15, "SVT": 16, "Ph": 14, "Eng": 15}, "Casablanca"],
["Benkirane", "Youssef", 18, "M", {"Math": 14, "PC": 13, "SVT": 15, "Ph": 12, "Eng": 14}, "Marrakech"],
["Alami", "Chaima", 20, "F", {"Math": 17, "PC": 18, "SVT": 17, "Ph": 16, "Eng": 17}, "Fes"],
["Rahali", "Sara", 21, "F", {"Math": 13, "PC": 14, "SVT": 14, "Ph": 15, "Eng": 16}, "Rabat"],
["Moumen", "Khalid", 19, "M", {"Math": 15, "PC": 16, "SVT": 15, "Ph": 14, "Eng": 14}, "Tanger"],
]
# Fonction pour calculer la note générale d'un étudiant
def Note_g(dicts):
"""
Calcule la moyenne générale d'un étudiant basée sur un dictionnaire de notes.
Args:
dicts (dict): Un dictionnaire contenant les notes de l'étudiant dans diverses matières.
Returns:
float: La moyenne générale de l'étudiant, calculée en pondérant les notes avec des coefficients prédéfinis.
"""
# Coefficients pour chaque matière
coefficients = [7, 7, 5, 2, 2]
Notes = [dicts["Math"], dicts["PC"], dicts["SVT"], dicts["Ph"], dicts["Eng"]]
S = 0 # somme des notes x coefficients
S_c = 0 #somme des coefficients
# Calcul de la somme pondérée des notes
for i in range(len(Notes)):
temp = coefficients[i] * Notes[i]
S = S + temp # S+= temp
S_c += coefficients[i]
# Calcul de la note finale
note_f = S / S_c
return note_f
# Ajout de la note générale à l'annuaire
Annuaire[0].append("Note Générale")
for j in range(1, len(Annuaire)):
Note_generale = Note_g(Annuaire[j][4])
Annuaire[j].append(Note_generale)
def afficher_annuaire(annuaire):
"""
Affiche les informations de chaque étudiant dans l'annuaire d'une manière formatée et lisible.
Args:
annuaire (list): Le carnet d'adresses à afficher, où chaque élève est représenté par une liste d'informations.
"""
# Imprimer l'en-tête
en_tete = " | ".join([str(item) for item in annuaire[0]])
print(en_tete)
print("-" * len(en_tete))
# Imprimer les informations de chaque élève
for eleve in annuaire[1:]:
ligne = " | ".join([str(item) for item in eleve])
print(ligne)
# Exemple d'utilisation de la fonction pour afficher l'annuaire
afficher_annuaire(Annuaire)
Nom | Prénom | Age | Sexe | Notes | Ville | Note Générale
---------------------------------------------------------
El Aoufi | Hassan | 19 | M | {'Math': 16, 'PC': 15, 'SVT': 16, 'Ph': 14, 'Eng': 15} | Casablanca | 15.434782608695652
Benkirane | Youssef | 18 | M | {'Math': 14, 'PC': 13, 'SVT': 15, 'Ph': 12, 'Eng': 14} | Marrakech | 13.73913043478261
Alami | Chaima | 20 | F | {'Math': 17, 'PC': 18, 'SVT': 17, 'Ph': 16, 'Eng': 17} | Fes | 17.217391304347824
Rahali | Sara | 21 | F | {'Math': 13, 'PC': 14, 'SVT': 14, 'Ph': 15, 'Eng': 16} | Rabat | 13.956521739130435
Moumen | Khalid | 19 | M | {'Math': 15, 'PC': 16, 'SVT': 15, 'Ph': 14, 'Eng': 14} | Tanger | 15.130434782608695
Autre fonction d'affichage pour mieux formaté l'output¶
def afficher_annuaire(annuaire):
"""
Affiche les informations de chaque étudiant dans l'annuaire de manière organisée et formatée.
La note générale est affichée avec deux décimales.
Args:
annuaire (list): Le carnet d'adresses à afficher, où chaque élève est représenté par une liste d'informations.
"""
# Convertir chaque élément de l'annuaire en chaîne de caractères pour un formatage correct
annuaire_str = [annuaire[0]] # Inclure l'en-tête tel quel
for eleve in annuaire[1:]:
eleve_str = [str(item) for item in eleve[:-1]] # Convertir tous sauf la dernière colonne
# Formater la note générale avec deux décimales
note_generale = float(eleve[-1])
eleve_str.append("{:.2f}".format(note_generale))
annuaire_str.append(eleve_str)
# Déterminer la largeur de chaque colonne pour un affichage uniforme
largeurs_colonnes = [max(len(str(annuaire_str[i][j])) for i in range(len(annuaire_str))) for j in range(len(annuaire_str[0]))]
# Créer une chaîne de formatage en utilisant les largeurs de colonne
format_ligne = " | ".join(["{:<" + str(largeur) + "}" for largeur in largeurs_colonnes])
# Imprimer l'en-tête
print(format_ligne.format(*annuaire_str[0]))
# Calculer la longueur totale de la ligne de séparation
longueur_separation = sum(largeurs_colonnes) + (len(largeurs_colonnes) - 1) * 3
print("-" * longueur_separation)
# Imprimer les informations de chaque élève
for eleve in annuaire_str[1:]:
print(format_ligne.format(*eleve))
# Exemple d'utilisation de la fonction pour afficher l'annuaire
afficher_annuaire(Annuaire)
Nom | Prénom | Age | Sexe | Notes | Ville | Note Générale
----------------------------------------------------------------------------------------------------------------------
El Aoufi | Hassan | 19 | M | {'Math': 16, 'PC': 15, 'SVT': 16, 'Ph': 14, 'Eng': 15} | Casablanca | 15.43
Benkirane | Youssef | 18 | M | {'Math': 14, 'PC': 13, 'SVT': 15, 'Ph': 12, 'Eng': 14} | Marrakech | 13.74
Alami | Chaima | 20 | F | {'Math': 17, 'PC': 18, 'SVT': 17, 'Ph': 16, 'Eng': 17} | Fes | 17.22
Rahali | Sara | 21 | F | {'Math': 13, 'PC': 14, 'SVT': 14, 'Ph': 15, 'Eng': 16} | Rabat | 13.96
Moumen | Khalid | 19 | M | {'Math': 15, 'PC': 16, 'SVT': 15, 'Ph': 14, 'Eng': 14} | Tanger | 15.13
Fonction d'ajout et fonction de generation de personne aléatoirement¶
import random
# Listes de prénoms masculins et féminins
male_prenom = [
"Mohammed", "Ahmed", "Youssef", "Hassan", "Khalid",
"Abdel", "Rachid", "Jamal", "Karim", "Ali",
"Omar", "Samir", "Anas", "Ayoub", "Adil"
]
femal_prenom = [
"Fatima", "Amina", "Khadija", "Nadia", "Hajar",
"Samira", "Ilham", "Laila", "Sanaa", "Asmaa",
"Zineb", "Hanan", "Soukaina", "Salma", "Rania"
]
#Liste des nom de famille marocains
nom_de_famille = [
"El Aoufi", "Benkirane", "Alami", "Rahali", "Moumen",
"Berrada", "Khalifi", "Sbai", "Ait Ali", "Ziani",
"Amrani", "Kabbaj", "Qasmi", "Laaroussi", "El Fassi",
"El Idrissi", "Benjelloun", "Gharbi", "Fakhouri", "Hassani",
"Daoudi", "Jabri", "El Khatib", "Boujemaoui", "El Mansouri",
"Nassiri", "Belhaj", "Chaoui", "El Yazidi", "Benallal",
"Laalami", "Raji", "El Ghalia", "Benmoussa", "El Kassimi",
"El Haddad", "Boualam", "Chraibi", "Doukali", "El Ayachi",
"Guedira", "El Mahi", "Bouchaib", "El Mokhtar", "Bounouar",
"Cherkaoui", "Tazi", "Alj", "Bouskri", "Mernissi"]
# Fonction pour ajouter une nouvelle personne à l'Annuaire
def ajouter_personne(annuaire, nom, prenom, age, sexe, notes, ville):
"""
Ajoute une nouvelle personne à l'annuaire.
Args:
annuaire (list): Le carnet d'adresses où ajouter la nouvelle personne.
nom (str): Le nom de famille de la personne.
prenom (str): Le prénom de la personne.
age (int): L'âge de la personne.
sexe (str): Le sexe de la personne (M ou F).
notes (dict): Un dictionnaire des notes de la personne dans différentes matières.
ville (str): La ville de résidence de la personne.
"""
note_generale = Note_g(notes) # Calcul de la note générale (fonction Note_g non fournie)
annuaire.append([nom, prenom, age, sexe, notes, ville, note_generale]) # Ajout de la personne à l'annuaire
# Fonction pour générer un grand nombre de personnes aléatoires et les ajouter à l'annuaire
def generer_grand_nombre_personnes(annuaire, nombre):
"""
Génère un grand nombre de personnes aléatoires et les ajoute à l'annuaire.
Args:
annuaire (list): Le carnet d'adresses où ajouter les personnes générées.
nombre (int): Le nombre de personnes à générer.
"""
# Boucle pour générer les personnes
for _ in range(nombre):
# Sélection aléatoire d'un nom de famille
nom = random.choice(nom_de_famille)
# Sélection aléatoire d'un prénom
prenom = random.choice(male_prenom + femal_prenom)
# Détermination du sexe basée sur le prénom
if prenom in male_prenom:
sexe = "M"
elif prenom in femal_prenom:
sexe = "F"
else:
print("Erreur de Sexe")
continue
# Sélection aléatoire de l'âge
age = random.randint(17, 21)
# Génération aléatoire des notes dans différentes matières
notes = {
"Math": random.randint(1, 20),
"PC": random.randint(1, 20),
"SVT": random.randint(1, 20),
"Ph": random.randint(1, 20),
"Eng": random.randint(1, 20)
}
# Sélection aléatoire d'une ville
ville = random.choice([
"Casablanca", "Marrakech", "Fes", "Rabat", "Tanger", "Salé", "Meknes", "Oujda", "Agadir", "Kenitra"
])
# Ajout de la personne générée à l'annuaire
ajouter_personne(annuaire, nom, prenom, age, sexe, notes, ville)
nombre_de_personnes = 500
generer_grand_nombre_personnes(Annuaire, nombre_de_personnes)
# Afficher l'annuaire (la fonction afficher_annuaire doit être définie)
afficher_annuaire(Annuaire)
Nom | Prénom | Age | Sexe | Notes | Ville | Note Générale
-------------------------------------------------------------------------------------------------------------------------
El Aoufi | Hassan | 19 | M | {'Math': 16, 'PC': 15, 'SVT': 16, 'Ph': 14, 'Eng': 15} | Casablanca | 15.43
Benkirane | Youssef | 18 | M | {'Math': 14, 'PC': 13, 'SVT': 15, 'Ph': 12, 'Eng': 14} | Marrakech | 13.74
Alami | Chaima | 20 | F | {'Math': 17, 'PC': 18, 'SVT': 17, 'Ph': 16, 'Eng': 17} | Fes | 17.22
Rahali | Sara | 21 | F | {'Math': 13, 'PC': 14, 'SVT': 14, 'Ph': 15, 'Eng': 16} | Rabat | 13.96
Moumen | Khalid | 19 | M | {'Math': 15, 'PC': 16, 'SVT': 15, 'Ph': 14, 'Eng': 14} | Tanger | 15.13
Benjelloun | Khalid | 20 | M | {'Math': 17, 'PC': 8, 'SVT': 10, 'Ph': 4, 'Eng': 1} | Oujda | 10.22
El Mansouri | Samira | 17 | F | {'Math': 10, 'PC': 13, 'SVT': 12, 'Ph': 12, 'Eng': 2} | Oujda | 10.83
Kabbaj | Samira | 19 | F | {'Math': 6, 'PC': 14, 'SVT': 20, 'Ph': 18, 'Eng': 17} | Marrakech | 13.48
Ait Ali | Zineb | 18 | F | {'Math': 20, 'PC': 20, 'SVT': 19, 'Ph': 17, 'Eng': 8} | Fes | 18.48
Bouchaib | Rachid | 20 | M | {'Math': 16, 'PC': 15, 'SVT': 15, 'Ph': 17, 'Eng': 11} | Kenitra | 15.13
El Mahi | Laila | 21 | F | {'Math': 16, 'PC': 1, 'SVT': 20, 'Ph': 6, 'Eng': 10} | Tanger | 10.91
El Kassimi | Laila | 19 | F | {'Math': 20, 'PC': 17, 'SVT': 6, 'Ph': 18, 'Eng': 14} | Fes | 15.35
Cherkaoui | Amina | 20 | F | {'Math': 6, 'PC': 19, 'SVT': 20, 'Ph': 11, 'Eng': 9} | Casablanca | 13.70
El Fassi | Hajar | 19 | F | {'Math': 18, 'PC': 19, 'SVT': 15, 'Ph': 15, 'Eng': 6} | Kenitra | 16.35
El Mahi | Hassan | 21 | M | {'Math': 19, 'PC': 17, 'SVT': 5, 'Ph': 5, 'Eng': 7} | Oujda | 13.09
Bounouar | Hajar | 19 | F | {'Math': 14, 'PC': 12, 'SVT': 1, 'Ph': 2, 'Eng': 13} | Marrakech | 9.43
.... Other Lines