angelV Posté(e) le 26 mai 2020 Signaler Posté(e) le 26 mai 2020 Bonjour, Nouveau travail donné par mon professeur aujourd'hui. Il n'est pas très compliqué mais je bloque à la question 2.2 et 2.3... Pourriez-vous m'aider ? Merci d'avance ! Voici mon début de programme... table = [['Clark', 6, 17, 'Chevalier'], ['Martheen', 8, 16, 'Chevalier'], ['Mulen', 4, 0, 'Chevalier'], ['Louly', 14, 4, 'Chevalier'], ['Phark', 13, 11, 'Chevalier'], ['Tom', 12, 16,'Chevalier'], ['Karl', 12, 7, 'Chevalier'], ['Korg', 1, 6, 'Chevalier'], ['Axal', 4, 20,'Chevalier'], ['Tim', 6, 17, 'Chevalier'], ['Fanks', 2, 6, 'Chevalier'], ['louli', 5, 18,'Chevalier'], ['Ario', 10, 18, 'Chevalier'], ['Marko', 6, 19, 'Chevalier'], ['Thoms', 5, 9,'Chevalier'], ['Risk', 9, 17, 'Chevalier'], ['Loumi', 20, 5, 'Chevalier'], ['Quarx', 18, 20,'Chevalier'], ['Lomo', 16, 19, 'Fantassin'], ['Cargo', 0, 5, 'Fantassin'], ['Syl', 12, 5,'Fantassin'], ['Faq', 12, 4, 'Fantassin'], ['Tobby', 4, 0, 'Fantassin'], ['Helen', 1, 14,'Fantassin'], ['Lis', 10, 14, 'Fantassin'], ['Syl', 4, 16, 'Fantassin'], ['Fancy', 8, 3,'Fantassin'], ['Phyl', 13, 1, 'Fantassin'], ['Sal', 1, 16, 'Fantassin'], ['Wherk', 4, 6,'Fantassin'], ['Fool', 10, 17, 'Fantassin'], ['Max', 15, 13, 'Fantassin'], ['Til', 12, 0,'Fantassin']] cible = ['Cible', 6, 11] def distance_cible(x_1, y_1, x_2, y_2) : distance = abs(x_2 - x_1) + abs(y_2 - y_1) return distance def liste_distances_triees(table, cible) : table_distance = [] for element in table : table_distance.append((distance_cible(element[1], element[2], cible[1], cible[2]), element[3])) table_distance_triee = ................................. return table_distance_triee
E-Bahut julesx Posté(e) le 26 mai 2020 E-Bahut Signaler Posté(e) le 26 mai 2020 Bonsoir, Réponse partielle... 2.2 L'instruction crée la liste des distances avec, en plus, le type de personnages. 2.3 A condition de compléter la ligne incomplète par table_distance_triee = sorted(table_distance) la fonction retourne les liste triées de la plus petite distance à la plus grandes. Pour n'avoir que les k premiers de la liste, rajouter k=7, par exemple après cible = ['Cible', 6, 11] , et compléter par return(table_distance_triee[0:k]). Ci-joint le script que j'ai testé. Algorithme kNN.py Pour ce soir ce sera tout, mais je pense que la suite devrait poser moins de problème. Comme d'habitude, j'attends tes commentaires.
angelV Posté(e) le 27 mai 2020 Auteur Signaler Posté(e) le 27 mai 2020 Bonjour, Alors merci pour votre réponse. Cependant je n'arrive pas bien à comprendre le [0:k] du return...
E-Bahut julesx Posté(e) le 27 mai 2020 E-Bahut Signaler Posté(e) le 27 mai 2020 [0:k] pour n'afficher que les k premiers termes de la liste triée, cf. question 2.3. Il faut prendre [0:k] car l'indice du premier terme de la liste est 0, et dans une énumération, le décompte s'arrête au dernier indice -1. Donc on affiche les termes d'indice 0, 1, 2,..., k-1, soit bien les k premiers. Comme j'avais déjà soulevé la question dans un fil précédent, j'aimerais bien savoir pour quel motif les concepteurs de Python ont procédé ainsi pour l'indice maximum. Peut-être à cause du démarrage à 0 ?
angelV Posté(e) le 2 juin 2020 Auteur Signaler Posté(e) le 2 juin 2020 Je pense aussi car je n'en sais rien... ?
E-Bahut julesx Posté(e) le 2 juin 2020 E-Bahut Signaler Posté(e) le 2 juin 2020 il y a 39 minutes, angelV a dit : Je pense aussi car je n'en sais rien... Tu ne peux pas poser la question à ton prof ? Cela dit, suivant les logiciels de programmation, pour les éléments indicés, l'indice du premier est, une fois 0, une fois 1, certains mêmes proposent en option de choisir l'indice initial. Par contre, pour les boucles, sauf à éluder l'indice de départ et donc à postuler forcément qu'il est nul, je ne vois pas l'intérêt, dans la suite [1;n], à se limiter à n-1. Autre chose, tu ne m'as pas dit comment tu as terminé cet exercice, ni si ce que je t'ai envoyé correspondait aux attentes de l'énoncé. P.S. : J'ai vu ta nouvelle demande, mais je ne suis pas sûr de pouvoir t'aider, car je n'ai jamais travaillé avec des ouvertures-fermetures de fichiers, même avec d'autres logiciels. Bien sûr, je regarderai, mais, vu ce qui précède, je n'écrirai pas dans ton post si je n'ai pas de réponse adéquate. Peut-être qu'un "vrai" informaticien regardera ce fil, avis à Etienne9 ?
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.