![]()
j'ai écrit ça comme code mais ça ne marche pas :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 n=int() def my_insert(liste): if type(n) != int: return None liste.append(n) liste.sort()
![]()
j'ai écrit ça comme code mais ça ne marche pas :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 n=int() def my_insert(liste): if type(n) != int: return None liste.append(n) liste.sort()
Salut,
Si vous racontez:
et que vous écrivez:
vous devriez vous rendre compte qu'il n'y a ni de deuxième paramètre ni de renvoi d'une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 n=int() def my_insert(liste): if type(n) != int: return None liste.append(n) liste.sort()
Votre code devrait ressembler à:
j'ai bien deux paramètre et çà retourne une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 def my_insert(liste, n): ... return liste
Reste à remplacer les ... par des instructions qui vont insérer n dans la liste.
Et si on vous dit que liste est une liste d’entiers relatifs triés par ordre croissant, c'est qu'on vous demande d'écrire une boucle qui va parcourir la liste pour trouver le premier élément plus grand que n pour insérer n avant cet élément et traiter les cas limites où cet élément est le premier ou le dernier de la liste.
Le but de l'exercice est de montrer que vous savez écrire une boucle, comparer, et un minimum de choses sur les listes. Si vous utilisez .sort, çà marche mais ce n'est pas ce qu'on vous demande.
Déjà poster un code qui essaie de faire le boulot qu'on vous demande de faire.... Et si le code ne fonctionne pas essayez de montrer que vous avez un peu réfléchi à ce que vous avez écrit et essayé de comprendre ce qui ne se passe pas comme attendu.
C'est la rédactio, d'une petite histoire dans laquelle vous racontez que si on appelle my_insert avec liste contenant ... et n ayant pour valeur ... çà retourne ... alors qu'on attend ...
Le nom savant de cette petite histoire est "description du problème".
Puis comme vous avez un peu réfléchi à ce que le code de my_insert fonctionne, il y a un soucis entre ce que vous pensiez avoir compris et le résultat obtenu (sinon vous auriez pu le corriger vous même sans venir râler ici).
L'un dans l'autre, vous réaliser qu'avant de venir demander de l'aide, il vous faut montrer que vous avez raisonnablement bossé et non juste poster 3 lignes de code qui ne ressemble à rien dans l'espoir qu'on vous débarrasse d'un boulot qui ne semble pas vous intéresser (et moi/nous encore moins que vous).
- W
La première partit du code avec None fonctionne mais quand j'essaye de faire la deuxième partit je reçoit ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 n= int() def my_insert(liste,n): if type(n) != int: return None liste.append(n) liste.sort() return listeavec lst = [1,5,78]:
my_insert(lst,39) ne donne pas le bon résultat
(mauvais return ou modifie lst)
Salut,
Relisez votre code et essayer d'imaginer ce que va faire l'ordinateur/Python lorsqu'il exécute les instructions que vous lui avez demandé.
On part de my_insert(lst,39).
Ce qui appelle la fonction my_insert avec les arguments liste= lst et n=39.
On arrive donc à la première instruction de la fonction if n != int: qui teste la condition n != int.
Lancez l'interpréteur Python pour voir ce qu'il en fait:
Python évalue la condition à Vrai et donc retourne None (au lieu d'une la liste triée attendue).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 >>> 39 != int True >>>
Donc la vraie question est de savoir qu'est ce que vous aviez en tête en écrivant:
Et tout le boulot qui est de relire votre code en se mettant à la place de Python pour l'exécuter "à la main" et comprendre ce qu'il va faire des instructions que vous lui demandez d'exécuter fait partie de votre apprentissage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if n != int: return None
note: si vous devez faire un devoir de math ou de français, vous vous relisez pour vous assurer que vos phrases sont bien construites et que le lecteur pourra comprendre ce que vous lui racontez. Là, c'est pareil, il faut apprendre à vous relire pour comprendre ce que Python fait (ou fera).
- W
Bonjour
Le plus marrant, c'est que la première version (if type(n) != int), elle, fonctionnait sur ce point (même si ce point n'est à priori pas demandé dans l'énoncé). Sans déconner quoi, tu es arrivé avec un code à 2 ronds et wiztricks te dit qu'il y a un souci sur la partie "insertion". Qu'est-ce que tu es allé modifier alors cette partie qui fonctionnait ?
Tu as bien conscience que, même si ça fonctionne, ce n'est pas ce que le prof te demande ?
Quel est le but de cette instruction ?
C'est pas parce que tu es dans un forum de prog qu'il faut oublier le français. Le français n'est pas que un truc fait pour te gonfler, c'est aussi un truc pour se faire comprendre. Et il est donc tout aussi utile en prog.
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
je vous est peut-être pas envoyer l’annoncé en entier
Écrire une fonction my_insert qui reçoit comme premier paramètre une liste d’entiers relatifs triée par ordre croissant et comme deuxième paramètre un entier relatif n, et qui renvoie une liste correspondant à la liste reçue, mais dans laquelle le nombre n a été inséré à la bonne place.
La liste donnée en paramètre ne doit pas être modifiée par votre fonction.
Vous pouvez supposer que le premier paramètre sera bien une liste triée d’entiers, mais si le deuxième paramètre n’est pas du bon type, la fonction retourne None.
et là on revient avec mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 n= int() def my_insert(liste,n): if type(n) != int: return None liste.append(n) liste.sort() return liste
Partager