Exercices corrigés Python (Série 7)

17 Sep 2017 17 Sep 2017 30846 vues ESSADDOUKI Mostafa 10 min de lecture

Exercice 1 — Calcul de la masse molaire moléculaire

 Exercice

Calculer la masse molaire à partir d'une formule chimique

 Niveau : Avancé
Définitions — Molécule et formule chimique Une molécule est un regroupement d'au moins deux atomes unis par des liens chimiques, représentée par une formule chimique.

Une formule chimique est une succession de symboles d'atomes, chacun suivi d'un entier indiquant le nombre d'apparitions de cet atome dans la molécule.

Chaque atome est symbolisé par une majuscule (initiale) suivie éventuellement d'une minuscule (pour distinguer F, Fe, Fm, Fr…).
Formule — Masse molaire moléculaire M(Molécule) = Σ nbr(atome) × A(atome)

nbr(atome) est le nombre d'apparitions et A(atome) est la masse atomique en g/mol.

  Exemple — Dichromate de potassium K₂Cr₂O₇

AtomeSymbolenbrA (g/mol)nbr × A
PotassiumK239,178,2
ChromeCr252,0104,0
OxygèneO716,0112,0
M(K₂Cr₂O₇)294,2 g/mol
Travail demandé :
  1. Fonction remplireAtome(N) — saisir N atomes et les écrire dans Atomes.txt
  2. Fonction massAtome() — lire Molecules.txt et calculer la masse de chaque molécule dans Resultats.txt
Format des fichiers Atomes.txt : une ligne par atome → symbole * masse
Molecules.txt : une ligne par molécule → nom * formule
Resultats.txt : une ligne par molécule → formule : masse_molaire
Exemple
Molecules.txt
Dichromate de potassium*K2Cr2O7
Eau*H2O
Resultats.txt
K2Cr2O7 : 294.2
H2O : 18.0
Explication : M(H₂O) = 2×A(H) + 1×A(O) = 2×1,0 + 16,0 = 18,0 g/mol.

Exercice 2 — Nombres premiers factoriels et primoriel

 Exercice

Vérifier si un nombre est premier factoriel ou premier primoriel

 Niveau : Intermédiaire
Définitions Nombre premier factoriel (PF) : nombre premier de la forme F! ± 1
Exemples : 7 = 3! + 1, 719 = 6! − 1

Nombre premier primoriel (PP) : nombre premier de la forme P# ± 1, où P# = produit de tous les nombres premiers ≤ P
Exemples : 211 = 7# + 1 = 2×3×5×7 + 1, 30029 = 13# − 1
Propriété — Primorielle P# La primorielle de P est le produit des nombres premiers ≤ P :
2# = 2, 3# = 2×3 = 6, 5# = 2×3×5 = 30, 7# = 2×3×5×7 = 210, 11# = 2310, 13# = 30030
Travail demandé :
  1. Fonction premier_fact(n) — vérifier si n est un nombre premier factoriel
  2. Fonction premier_primoriel(n) — vérifier si n est un nombre premier primoriel
Exemples
Entrée
n = 719
n = 211
Sortie
premier_fact(719)      → True  (6! - 1)
premier_primoriel(211) → True  (7# + 1)
Vérification : 6! = 720 → 720 − 1 = 719 ✓ (719 est premier). 7# = 2×3×5×7 = 210 → 210 + 1 = 211 ✓ (211 est premier).

Récapitulatif

ExerciceFonctionsTechnique cléComplexité
Masse molaireremplireAtome, dictionnaire, massAtomeParsing de formule chimique, dictionnaire, fichiersO(|formule|) par molécule
Premier factorielpremier, premier_factGénération de factorielles, test de primalitéO(√n + log n!)
Premier primorielpremier, premier_primorielGénération de primorielles, test de primalitéO(√n × π(P)) où π(P) = nb premiers ≤ P
Points clés à retenir
  • Pour le parsing de formules chimiques, une expression régulière [A-Z][a-z]*\d* est bien plus robuste qu'un parsing caractère par caractère.
  • Le test de primalité en O(√n) (au lieu de O(n)) est une optimisation fondamentale : tester seulement jusqu'à √n suffit.
  • Les générateurs Python (yield) permettent de produire des suites infinies de façon paresseuse et économe en mémoire.
  • Toujours utiliser with open(...) pour la gestion des fichiers : fermeture automatique garantie.
  • Un dictionnaire Python (dict) est le meilleur outil pour associer symboles d'atomes ↔ masses atomiques.
Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.