Comment connaître le résultat le plus proche
Lieusaint
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjours, je suis étudiant en 1er STI2D et je voulais connaître une formule mathématique qui permettes de calculer quelle est le nombre le plus proche entre 2 nombre. Mon objectif est de réaliser un programme pouvant dire quelle est le nombre le plus proche d'un dit chiffre. Par exemple si j'ai 18 et que les je veux savoir (entre 2 et 20) quelle est le nombre le plus proche. (a plus proche de x que b ou non)
2 réponses
-
Bonjour
Et comme ça tu dirais que quel chiffre est plus proche de 18 entre 2 et 20?
-
Bonsoir.
1ère chose, enregistrer les valeurs à tester dans un itérable, ici un tuple.
nombres = (2, 20, 10,) x = 15
Maintenant si l'on fait une soustraction de valeurs, on se retrouvera avec quelques valeurs négatives peu importe le sens choisi (2 - 15 ou 15 - 20), python propose une fonction pour convertir valeurs négatives en positives => abs
Donc on va calculer les différences de chaque nombre par rapport à x que l'on va enregistrer dans une liste.
differences = [] for nombre in nombres: differences.append(abs(x - nombre))
Cette liste construite, on va en déterminer la valeur mini.
difference_min = float('inf') for difference in differences: if difference < difference_min: difference_min = difference print('différence mini', difference_min)
Il ne reste plus qu'à récupérer les indices de la liste "differences" dont les valeurs sont celles de la différence mini, et d'associer ces indices aux nombres.
nombres_plus_proches_de_x = [] for i, difference in enumerate(differences): if difference == difference_min: nombre = nombres[i] nombres_plus_proches_de_x.append(nombre) print(nombres_plus_proches_de_x)
On peut raccourcir tout cela en quelques lignes avec python
difs = tuple(abs(x - n) for n in nombres) dif_min = min(difs) nombres_proches = tuple(nombres[i] for i, v in enumerate(difs) if v == dif_min) print(nombres_proches)
-
Et tu iras passer son bac à sa place?
Une des règles ici est qu’on ne fait pas les exercices à la place des demandeurs.
On attend qu’ils réfléchissent un peu par eux même, qu’ils proposent au moins un debit de solution et on les oriente s’il y a des corrections à apporter.
Là déjà https://forums.commentcamarche.net/forum/affich-36260371-algorithme-affichage-du-nombre-de-chiffre-d-un-entier-et-son-nombre-inverse#p36261305 tu en as trop fait -
-