Projet 3 : Randonnée
Présentation du projet
On souhaite simuler un chemin de randonnée, passant par des sommets. Le but du projet est de pouvoir simuler des temps de trajets, détecter les sommets, les dénombrer... La capture ci-contre vous donne une simulation d'une randonnée avec les dénivelés, notés sur la courbe bleue.
Le fichier à compléter est à télécharger ci-dessous.
En premier lieu, il devra être renommé sous la forme nom_prenom_projet_03.py où nom, prenom sont correctement remplacés (pas d'accent, pas d'espace, pas de majuscules).
Le docstring des fonctions ainsi que des plans de test exploitables par le module doctest
sont déjà écrits, il ne faut pas les modifier !
Remarque :
Les questions 1, 2, 3 et 4 peuvent être complétées dans n'importe quel ordre.
Cependant, il faut commencer par lire l'ensemble du sujet afin de bien comprendre l'objectif.
Seul le mot-clef pass
est à supprimer et à remplacer par le code de la fonction.
Attention :
Tout plagiat entre élèves ou sur une IA conduira à la note de 0 sans autre avertissement.
Question 1
Compléter le corps de la fonction test_denivele()
def test_denivele(tab):
"""
tab – liste d'entiers
Sortie : booléen – True si tab contient des éléments
successifs distincts, False sinon.
>>> test_denivele([1, 2, 3, 2, 4, 1])
True
>>> test_denivele([1, 2, 3, 1, 2, 2])
False
"""
Question 2
Compléter le corps de la fonction denivele()
def denivele(n, mini, maxi):
"""
n – entier strictement positif
mini, maxi – entiers strictement positifs avec mini < maxi
Sortie : liste – liste de n entiers aléatoires compris
entre mini (inclus) et maxi (inclus). Attention,
deux éléments successifs doivent être distincts.
>>> test_denivele(denivele(5, 1, 4))
True
>>> test_denivele(denivele(20, 1, 8))
True
"""
Dans la suite du mini-projet, on considère que la liste de nombres entiers décrit le trajet parcouru par un randonneur.
L'interprétation ci-contre illustre la liste [2, 3, 2, 5, 4].

Question 3
Avant de partir, le randonneur souhaite connaître le nombre de plus hauts sommets qu'il va rencontrer ainsi que leur hauteur. Avec la liste [2, 3, 2, 5, 4], il rencontre une seule fois le plus haut sommet de hauteur 5. Compléter le corps de la fonction nb_hauts_sommets()
.
def nb_hauts_sommets(chemin):
"""
chemin – liste d'entiers dont deux éléments successifs sont
distincts.
Sortie : couple d'entiers – le nombre d'occurrences du plus
grand élément de la liste et sa valeur.
>>> nb_hauts_sommets([2, 3, 2, 5, 4])
(1, 5)
>>> nb_hauts_sommets([2, 8, 3, 8, 4, 8, 5, 6, 8])
(4, 8)
"""
Question 4
Pour monter d'un niveau, le randonneur met 10 minutes. Pour descendre d'un niveau, il met 5 minutes. Ainsi, pour parcourir la liste [2, 3, 2, 5, 4], le randonneur met 50 minutes.
Compléter le corps de temps_trajet()
def temps_trajet(chemin):
"""
chemin – liste d'entiers dont deux éléments successifs sont
distincts.
Sortie : entier – temps de parcours de la liste
>>> temps_trajet([2, 3, 2, 5, 4])
50
>>> temps_trajet([2, 8, 3, 8, 4, 8, 5, 6, 8])
240
"""
Question 5
Dans le programme principal, utilisez les fonctions précédentes pour simuler une randonnée.
Afficher :
le trajet à effectuer ;
le nombre de plus hauts sommets qu'il rencontrera ;
le temps qu'il mettra à effectuer cette randonnée.
et toutes autres informations que vous jugerez utiles !
Attention : À propos de la suite du projet...
Bien lire la remarque après le 🔴 sur les questions 6 et 7 !
Question 6
🔴 Cette question 6 est à réaliser uniquement par les élèves ayant eu plus de 12 de moyenne sur les 2 premiers projets.
On appelle « sommet » un entier encadré par deux nombres plus petits que lui. Le premier et le dernier nombre ne peuvent donc pas être des sommets.
Concevoir une fonction qui renvoie le nombre de sommets d'un trajet. Lui ajouter un docstring complet ainsi que les tests nécessaires.
Question 7
🔴 Cette question 7 est à réaliser uniquement par les élèves ayant eu plus de 15 de moyenne sur les 2 premiers projets.
Réaliser une petite interface graphique de simulation de votre randonnée. Vous pourrez utiliser le module turtle
pour ce besoin.