Partie 3 · exercices 25 à 34

Dialoguer avec l'utilisateur

print, input… et un convertisseur de coordonnées GPS

Un programme devient vraiment utile quand il pose des questions et affiche des réponses. À la fin de cette partie, tu auras programmé un convertisseur de coordonnées GPS.

CoursAfficher : print

print affiche plusieurs éléments séparés par des virgules. Python ajoute un espace entre eux et passe à la ligne à la fin.

afficher.py
a = 7
b = 5
print("La somme vaut", a + b)          # La somme vaut 12
print(f"{a} x {b} = {a * b}")          # 7 x 5 = 35
print(round(22 / 7, 3))                # 3.143

À retenir

Un texte s'écrit entre guillemets : "La somme vaut".

Dans une f-chaîne f"...", ce qui est entre accolades { } est remplacé par sa valeur.

round(x, 2) arrondit x à 2 chiffres après la virgule.

CoursDemander : input

bonjour.py
prenom = input("Quel est ton prénom ? ")
print("Bonjour", prenom)

input affiche la question, attend que l'utilisateur tape une réponse et appuie sur Entrée, puis renvoie ce qui a été tapé.

Vigilance : input renvoie toujours du texte

Si l'utilisateur tape 12, input renvoie le texte "12", pas le nombre 12. Et "12" + "3" donne "123" !

Pour obtenir un nombre, on convertit : int(...) pour un entier, float(...) pour un nombre décimal.

À l'exécution, l'utilisateur doit taper les décimaux avec un point : 12.5.

produit.py
a = int(input("Premier entier : "))
b = int(input("Second entier : "))
print(f"{a} x {b} = {a * b}")
TypeNom en PythonExemplesConversion
entierint12, -3int("12") → 12
décimalfloat12.5, 3E8float("12.5") → 12.5
texte (chaîne)str"Bonjour", "12"str(12) → "12"

Vigilance

int(input("...")) : deux parenthèses fermantes à la fin, une pour input, une pour int.

ExercicesDes programmes qui dialoguent

EX 25Je m'entraîne 🌶️prise en main

Exercice 25 — Bonjour

Écris un programme qui demande le prénom et l'âge de l'utilisateur, puis affiche par exemple :

console
Bonjour Léa, dans 10 ans tu auras 25 ans.
Indice

L'âge doit être converti avec int pour pouvoir lui ajouter 10.

💾 NOM_Prenom_ex25.py

EX 26Je m'entraîne 🌶️prise en main

Exercice 26 — Le produit

Recopie produit.py, teste-le, puis modifie-le pour qu'il affiche aussi la somme et la différence des deux entiers.

Indice

Ajoute deux lignes print(f"...") sur le même modèle.

💾 NOM_Prenom_ex26.py

EX 27Je m'entraîne 🌶️🌶️application

Exercice 27 — La division euclidienne, en clair

Complète ce programme pour qu'il demande un dividende et un diviseur, puis affiche l'égalité de la division euclidienne.

division.py
dividende = int(input("Dividende : "))
diviseur = int(input("Diviseur : "))
quotient = ...
reste = ...
print(...)

Avec 23 et 7, le programme doit afficher : 23 = 7 x 3 + 2. Utilise-le pour vérifier ta réponse à l'exercice 17.

Indice 1

quotient = dividende // diviseur.

Indice 2

Pour l'affichage, une f-chaîne : f"{dividende} = {diviseur} x ...".

💾 NOM_Prenom_ex27.py

EX 28Je m'entraîne 🌶️🌶️application

Exercice 28 — Moyenne pondérée

Écris un programme qui demande deux notes et leurs coefficients, puis affiche la moyenne pondérée arrondie au centième.

Test : 12 coefficient 2 et 15 coefficient 1 doivent donner 13.0.

Indice 1

Les notes peuvent être à virgule : utilise float.

Indice 2

Moyenne = (note1 × coef1 + note2 × coef2) ÷ (coef1 + coef2). Attention aux parenthèses !

💾 NOM_Prenom_ex28.py

EX 29Je m'entraîne 🌶️🌶️🌶️plusieurs étapes

Exercice 29 — Convertisseur de durée

Transforme ton travail de l'exercice 20 en un programme qui demande une durée en secondes et affiche la conversion sous la forme :

console
55555 s = 15 h 25 min 55 s
Indice

Reprends les calculs avec // et % de l'exercice 20, en remplaçant 55555 par la valeur saisie.

💾 NOM_Prenom_ex29.py

CoursLes coordonnées GPS

Une position sur Terre est repérée par deux angles :

Ces angles s'écrivent de deux façons :

ÉcritureExemple : le lycéeOù la trouve-t-on ?
DD : degrés décimaux44,1646° N ; 4,6103° Ecartes en ligne, applications, Folium
DMS : degrés, minutes, secondes44° 9′ 52,6″ N ; 4° 36′ 37,2″ EGPS de randonnée, cartes papier, Wikipédia

À retenir

Comme pour les heures : 1° = 60′ (minutes d'angle) et 1′ = 60″ (secondes d'angle), donc 1° = 3600″.

Méthode : de DMS vers DD

\[\text{DD} = d + \frac{m}{60} + \frac{s}{3600}\]

Exemple, la tour Eiffel à 48° 51′ 30″ N :

\[\text{DD} = 48 + \frac{51}{60} + \frac{30}{3600} \approx 48{,}8583\]

Méthode : de DD vers DMS

Exemple avec la latitude du lycée, 44,1646098° :

  1. Les degrés sont la partie entière : \(d = 44\).
  2. On multiplie la partie décimale par 60 : \(0{,}1646098 \times 60 = 9{,}876588\), donc \(m = 9\).
  3. On multiplie la nouvelle partie décimale par 60 : \(0{,}876588 \times 60 = 52{,}59528\), donc \(s \approx 52{,}6\).

Résultat : 44° 9′ 52,6″ N. En Python, la partie entière d'un nombre positif s'obtient avec int : int(44.1646098) donne 44.

Vigilance

Ces méthodes valent pour des coordonnées positives (nord et est). À l'ouest de Greenwich (Bretagne, Bordeaux…), la longitude est négative en DD : on verra dans la partie 4 comment gérer N/S/E/O.

Les calculs décimaux sont approchés (exercice 18) : on arrondit les secondes, par exemple à 0,1″ près.

ExercicesConstruire le convertisseur

EX 30Je m'entraîne 🌶️prise en main

Exercice 30 — À la main d'abord

  1. Avec la calculatrice, convertis en DD la latitude de la tour Eiffel : 48° 51′ 30″.
  2. Convertis en DMS sa longitude : 2,2945° E.
Indice

Pour la question 2 : \(d = 2\), puis \(0{,}2945 \times 60 = \ldots\)

💾 NOM_Prenom_ex30.py

EX 31Je m'entraîne 🌶️🌶️application

Exercice 31 — De DMS vers DD

Écris un programme qui demande les degrés, les minutes et les secondes d'un angle, puis affiche sa valeur en degrés décimaux, arrondie à 6 chiffres après la virgule.

Teste-le avec la tour Eiffel (48° 51′ 30″) : tu dois retrouver ta réponse de l'exercice 30.

Indice 1

Les secondes peuvent être décimales (52.6) : utilise float.

Indice 2

dd = d + m / 60 + s / 3600, puis round(dd, 6).

💾 NOM_Prenom_ex31.py

EX 32Je m'entraîne 🌶️🌶️🌶️plusieurs étapes

Exercice 32 — De DD vers DMS

Complète ce programme qui convertit un angle positif de DD vers DMS.

dd_vers_dms.py
dd = float(input("Angle en degrés décimaux : "))
d = int(dd)                 # partie entière
minutes_dec = (dd - d) * 60
m = ...
s = ...
print(f"{d}° {m}' {round(s, 1)}\"")

Tests : 44.1646098 doit donner 44° 9' 52.6" et 4.6103368 doit donner 4° 36' 37.2".

Indice 1

m est la partie entière de minutes_dec.

Indice 2

s s'obtient en multipliant par 60 la partie décimale de minutes_dec, c'est-à-dire minutes_dec - m.

Indice 3

Dans la dernière ligne, \" permet d'afficher un guillemet (le symbole des secondes).

💾 NOM_Prenom_ex32.py

EX 33Je m'entraîne 🌶️🌶️application

Exercice 33 — L'aller-retour

  1. Avec ton programme de l'exercice 31, convertis 44° 9′ 52,6″ en DD. Retrouves-tu exactement 44,1646098 ?
  2. Une seconde d'angle de latitude correspond à environ 31 m sur le terrain. Quelle distance représente une erreur de 0,1″ ? Est-ce gênant pour placer le lycée sur une carte ?
Indice

L'écart vient de l'arrondi des secondes au dixième, fait à l'exercice 32.

💾 NOM_Prenom_ex33.py

EX 34Défi 🌶️🌶️🌶️🌶️défi

Exercice 34 — Le convertisseur des pros

Défi : on peut convertir de DD vers DMS sans décimales, avec // et %, comme pour les durées de l'exercice 20.

  1. Convertis l'angle en un nombre entier de secondes : total = round(dd * 3600).
  2. Déduis-en d, m et s avec // et %, puis affiche le résultat.
  3. Compare avec l'exercice 32 pour 44.1646098. Pourquoi les secondes diffèrent-elles légèrement ?
Indice

C'est exactement le même calcul que pour 55 555 secondes = 15 h 25 min 55 s !

💾 NOM_Prenom_ex34.py

À retenirSynthèse

Ce que je sais faire

  • Afficher des textes et des valeurs avec print et les f-chaînes.
  • Demander une valeur avec input et la convertir avec int ou float.
  • Arrondir avec round.
  • Convertir des coordonnées GPS entre DD et DMS.