Créer le pseudo code ou l'organigramme avant de le traduire en code Python.
Créer un plan de tests et bien tester son programme.
Utiliser le débogueur au besoin.
Exercice 1
Il s'agit de faire un jeu à 2 joueurs pour deviner un nombre. Le premier joueur devra entrer le nombre à faire deviner et le second tentera de trouver le nombre. Pour aider, le programme devra indiquer s'il faut monter ou descendre. Le pointage final équivaut au nombre de tentatives.
Suggestion :
Pour faire "disparaître" le nombre choisi par le premier joueur, effectuer 100 print vide après avoir obtenu le nombre.
Solution
#################### Pseudo code - fonction deviner_nombre ####################
# Paramètres d'entrée de la fonction : nomre_a_deviner
# Sortie : aucun (on affiche le résultat)
##############################################################################
#Demander au joueur de proposer un nombre
#Tant que nombre != nombre_a_deviner#
# Si le nombre proposé == nombre à deviner
# On a trouvé le nombre, donc on sort de la boucle (break)
# Sinon
# Si le nombre proposé est < nombre à deviner
# Dire à l'utilisateur de proposer un nombre plus grand
# Sinon
# Dire à l'utilisateur de proposer un nombre plus petit.
#
# Demander au joueur de proposer un nombre
#
# Afficher le Bravo, avec la bonne réponse et le score
###############################################################################
########################## Pseudo-code programme principal ##########################
Demander à l'utilisateur le nombre à faire deviner et le mettre dans la variable nombre_gagnant.
Laisser 100 lignes vides.
Appeler la fonction : deviner_nombre(nombre_gagnant)
###############################################################################
def deviner_nombre(nombre_a_deviner:int):
"""
Fonction qui permet de guider l'utilisateur
à deviner un nombre passé en paramètres.
:param nombre_a_deviner: Le nombre à deviner.
:return: Aucun
"""
score = 0
trouve = False
while not trouve:
score += 1
nombre_propose = int(input(f"Tentative {score}: Quel nombre tentez-vous? "))
if nombre_propose == nombre_gagnant:
trouve = True
else:
if nombre_propose < nombre_a_deviner:
print("Le nombre est plus haut")
else:
print("Le nombre est plus petit")
print("*******************************")
print(f"Bravo! La bonne réponse était {nombre_gagnant}")
print(f"Votre score est de {score}")
if __name__ == "__main__":
nombre_gagnant = int(input("Quel est le nombre à faire deviner? "))
print("\n" * 100)
deviner_nombre(nombre_gagnant)
Exercice 2
Imaginez que vous développez un programme pour une application de gestion de prêts. Vous devez développer un programme qui aidera les utilisateurs à suivre le remboursement de leurs dettes. Le remboursement de la dette peut-être fait en plusieurs fois. L'utilisateur doit fournir des montants de remboursement jusqu'à ce que la dette soit entièrement payée ou que l'utilisateur entre une valeur non numérique.
À la fin du processus, le programme doit afficher le nombre total de paiements effectués.
Résultat attendu :
Quel est le montant de la dette? 4000
Dette: 4000.0$. Combien voulez-vous rembourser? 2500
Dette: 1500.0$. Combien voulez-vous rembourser? 1000
Dette: 500.0$. Combien voulez-vous rembourser? 500
Dernier remboursement de 500.0 $ effectué
********************
Nombre de paiements: 3
Montant total remboursé: 4000.0 $
********************
Solution
################################## pseudo-code fonction remboursements_dette #########################################
# paramètres d'entrée : dette
# Valeur de retour (sortie) : aucun (affichage)
######################################################################################################################
# nb_remboursement = 0
# total_remboursements = dette
#
# Tant que la dette n'est pas totalement remboursée (dette > 0) ou que utilisateur entre une valeur non numérique ()
# Demander montant de remboursement à l'utilisateur : remboursement
# Si remboursement < 0 alors
# Afficher qu'il est impossible de faire le remboursement.
# On ignore la suite des instruction et on re-boucle
# Sinon si remboursement >= dette, alors
# dette = 0
# Incrémenter le nombre de remboursement : nb_remboursement = nb_remboursement + 1
# Sinon
# Mettre à jour la dette avec le montant remboursé : dette = dette - remboursement
# Incrémenter le nombre de remboursement : nb_remboursement = nb_remboursement + 1
#
######################################################################################################################
############################ programme principal #####################################################################
# Lire le montant de la dette
# Appeler la fonction remboursements_dette(dette)
######################################################################################################################
Code Python
def remboursements_dette(dette : float):
nb_remboursements = 0
total_remboursements = dette
while dette > 0:
remboursement_str = input(f"Dette: {dette}$. Combien voulez-vous rembourser? ")
if remboursement_str.isalpha():
break
remboursement = float(remboursement_str)
if remboursement < 0 :
print("Impossible de faire le remboursement, nombre négatif!")
continue
elif remboursement >= dette:
print(f"Dernier remboursement de dette ({dette}) effectué.")
dette = 0
nb_remboursements += 1
else:
dette -= remboursement
nb_remboursements += 1
total_remboursements = total_remboursements - dette
print("*" * 20)
print(f"Nombre de paiements: {nb_remboursements}")
print(f"Montant total remboursé: {total_remboursements} $")
print("*" * 20)
if __name__ == "__main__":
dette = float(input("Quel est le montant de la dette? "))
remboursements_dette(dette)
Exercice 3
Imaginez que vous travaillez sur un projet de suivi climatique pour une station météorologique. Le programme doit permettre à l'utilisateur d'entrer des températures successivement. Lorsque l'utilisateur souhaite terminer, il devra entrer le mot "arrêt".
À la fin, le programme affichera la température la plus basse, la température la plus haute et la température moyenne parmi celles qui ont été saisies.
Entrez une température (ou 'arrêt' pour finir) : 25
Entrez une température (ou 'arrêt' pour finir) : 18
Entrez une température (ou 'arrêt' pour finir) : 22
Entrez une température (ou 'arrêt' pour finir) : arrêt
La température la plus basse est : 18
La température la plus élevée est : 25
La température moyenne est : 21.67
Solution
def calculer_min(temp_min, temperature):
"""
Fonction qui retourne la température minimale entre la nouvelle température
et la température minimale actuelle.
:param temp_min: Température minimale actuelle.
:param temperature: Nouvelle température.
:return: La température minimale mise à jour.
"""
if temperature < temp_min:
temp_min = temperature
# Notez qu'il est possible de trouver la plus petite
# température avec la fonction min()
# temp_min = min(temp_min, temperature)
return temp_min
def calculer_max(temp_max, temperature):
"""
Fonction qui retourne la température maximale entre la nouvelle température
et la température maximale actuelle.
:param temp_max: Température maximale actuelle.
:param temperature: Nouvelle température.
:return: La température maximale mise à jour.
"""
if temperature > temp_max:
temp_max = temperature
# Notez qu'il est possible de trouver la plus grande
# température avec la fonction max : max()
# temp_max = max(temp_max, temperature)
return temp_max
def calculer_somme(cumul_temp, temperature):
"""
Cette fonction met à jour le cumul des températures en ajoutant une nouvelle
valeur de température au cumul existant.
:param cumul_temp: Le cumul actuel des températures.
:param temperature: La nouvelle température à ajouter au cumul.
:return: Le nouveau cumul des températures après l'ajout.
"""
cumul_temp += temperature
return cumul_temp
def calculer_moyenne(total, nb_valeurs):
"""
Fonction qui calcule et retourne la moyenne des températures.
:param total: La somme des températures.
:param count: Le nombre total de températures.
:return: La moyenne des températures.
"""
moyenne = total / nb_valeurs
return moyenne
def afficher_statistiques(temp_min, temp_max, temp_moyenne):
"""
Fonction qui affiche les statistiques des températures.
:param temp_min: Température minimale.
:param temp_max: Température maximale.
:param temp_moyenne: Température moyenne.
"""
print(f"Température minimum : {temp_min}")
print(f"Température maximum : {temp_max}")
print(f"Température moyenne : {temp_moyenne}")
if __name__ == "__main__":
temp_min = float('inf')
temp_max = float('-inf')
total_temp = 0
compteur = 0
temperature_str = input("Veuillez entrer une température : ")
while temperature_str != "arrêt" :
temperature = float(temperature_str)
temp_min = calculer_min(temp_min, temperature)
temp_max = calculer_max(temp_max, temperature)
total_temp = calculer_somme(total_temp, temperature)
compteur += 1
temperature_str = input("Veuillez entrer une température : ")
temp_moyenne = calculer_moyenne(total_temp, compteur)
afficher_statistiques(temp_min, temp_max, temp_moyenne)