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 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.
Question 6 : BONUS
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 trajets. Lui ajouter un docstring complet ainsi que les tests nécessaires.