angelV Posté(e) le 26 mai 2020 Signaler Share Posté(e) le 26 mai 2020 (modifié) 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 Modifié le 26 mai 2020 par angelV Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 26 mai 2020 E-Bahut Signaler Share 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. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
angelV Posté(e) le 27 mai 2020 Auteur Signaler Share 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... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 27 mai 2020 E-Bahut Signaler Share 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 ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
angelV Posté(e) le 2 juin 2020 Auteur Signaler Share Posté(e) le 2 juin 2020 Je pense aussi car je n'en sais rien... ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 2 juin 2020 E-Bahut Signaler Share 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 ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.