Posté par lolop (site web personnel) .
Évalué à 3.
Dernière modification le 07 mars 2019 à 22:57.
Et mets en page ton code (voir l'aide mémoire de la syntaxe wiki avec trois ` en bas de la page de rédaction). Car du code Python sans avoir l'indentation… aye.
# Du code avec coloration syntaxiquedeftruc(x):returnx-1
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Tu peux essayer ton script sur Python Tutor, ou encore en mode débogage dans Pyzo (ou autre IDE), tu verras ainsi quelles valeurs sont manipulées, où tu passes dans ton code, et tu pourras apprendre en identifiant ton erreur.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Les profs de francais on l'habitude des copier/coller de wikipédia, ils voyent les même chaque année.
Et ils sanctionnent légérement.
Si j'etais prof et que je gauler un éléve poster ses devoir "complets" sur linuxfr ou stackoverflow, combien j'enleverais de points?
Zero pour des questions technique ou des conseils sur le type de l'erreur(ca va dans le sens de la recherche).
Par contre, pour un devoir complet, je mettrais un 5/20 de base pour l'effort d'avoir mal codé un code bugué :)
Et moins 2 point pour les nom de fonction ou variable en francais.
Quand vous déboulez à deux ou trois avec des questions un peu basiques sur vos exercices de cours… bin le forum s'auto-défend. Plouf, moinssé, zou, next.
Notez qu'aucun modérateur n'a supprimé vos dites questions.
Personne n'a envie de vous répondre ? Bin normal. On n'est pas là pour remplacer votre prof (qui est payé, lui, pour répondre à vos questions).
Que les devoirs soient notés ou pas n'est pas le problème : le gros problème est que si vous ne comprenez pas les réponses.
Posté par Marco .
Évalué à 2.
Dernière modification le 08 mars 2019 à 13:21.
Commence par lire ce que te dit ton interpréteur (ce n'est pas un compilateur), essaie de voir ce que vaut n avec un print. Ton interpréteur semble te dire que n est à None à un moment donné.
Donne des vrais noms à tes variables, pour que les gens qui te lisent puisse comprendre le travail plus rapidement et donc envie de te répondre.
Posté par Panhwein .
Évalué à 1.
Dernière modification le 08 mars 2019 à 20:39.
Déjà j'ai du mal à lire ton code, les parametres suivent pas entre les functions.
J'imagine que le premier c'est un tableau, le deuxieme le nombre à supprimer, et le troisième(la profondeur?)
Chez moi, ca donnerais ca:
#!/usr bin env pythondefmystere(numbersList,wanted,nbToTest):i=0whilei<=nbToTest-1:ifnumbersList[i]==wanted:numbersList.remove(numbersList[i])returnnumbersListi=i+1if__name__=='__main__':newList=mystere([2,-7,4,5,12,10,4,2,4,-18],5,4)print(newList)
amho, pour virer un element d'un tableau, une function suffit. Voir une ligne si tu ne fais pas cette opération régulierement.
Fait du code simple! Enlever un element = une fonction, pas trois qui s'enchainent avec des nom de parametres different(illisible) et encre moins une qui retourne un appel de fonction. Prend le retour, teste le, retourne le.
Pense simple: 1 function, un truc.
Je suis pas un pro du python, mais l'approche est la même avec tous les languages.
C'est trolldi? A part le Fork peut-être.
Posté par lolop (site web personnel) .
Évalué à 4.
Dernière modification le 09 mars 2019 à 12:52.
Bon, ton code fait très programmation "C" avec un tableau de taille fixe dont on gère le nombre d'éléments séparément. En Python on a un type list qui est un conteneur dynamiques, qui dispose des opérateurs/méthodes: t.remove(valeur), del t[index]… et dont on peut connaître le nombre d'éléments len(t).
Bref, tu fais du C en Python, qui plus est avec un algo très compliqué pour réaliser une opération simple. Mais en restant dans ton code, en ajoutant docstring et commentaires (conseil, fait le, même pour toi, ça permet quand on lit/écrit d'identifier des écarts entre ce qu'on pense que la fonction fait et ce qu'elle fait réellement), ça donnerais:
defsupprimer(t,n,k):"Supprime l'élément à l'index k dans t (de taille n) et retourne la nouvelle taille"foriinrange(k,n-1):# On décale les éléments (les anciennes valeurs restent "à droite")t[i]=t[i+1]returnn-1defsupprimerPremiereOccurence(t,n,elt):"Supprime la première occurence de elt dans t (de taille n) et retourne la nouvelle taille de t"foriinrange(n):# Recherche la première occurence, et appelle la fonction de suppressionift[i]==elt:returnsupprimer(t,n,i)# Retourne nouvelle taille du tableau# Si pas trouvé, la taille du tableau n'a pas changé !!!!!returnn# <------------ ton bug était là: si elt n'est pas dans t, tu ne passes pas# par ton return et ça fait que ta fonction sort implicitement avec None,# qui se retrouve stocké dans nbelem, propagé dans n, puis qui provoque une # comparaison NoneType avec int (n>0) au début de l'itération suivante.defmystere(t,n,x):"Supprime les éléments x de t (de taille n) et retourne la nouvelle taille de t"continuer=Truewhilen>0andcontinuer==True:nbelem=supprimerPremiereOccurence(t,n,x)ifnbelem==n:continuer=Falseelse:n=nbelemreturnnliData=[2,-7,4,5,12,10,4,2,4,-18]print(mystere(liData,len(liData),4))
Note: Là on fait directement des modifications dans la liste passée en paramètre ; s'il n'y a pas de contrainte on préférera créer une nouvelle liste et la retourner (éviter les effets de bord).
Et ça se fait même en 1 ligne avec les listes en compréhension:
Quelqu'un vient demander un peu d'aide poliment avec un début de script et l'incompréhension d'une erreur, donc un peu de travail derrière, et paf, on lui envoie que des commentaires désobligeants, on le catalogue de suite comme un pov' nul d'étudiant qui sait rien faire, bonjour les préjugés, à croire que tous ceux postant ce genre de commentaires n'ont jamais galéré sur de simples problèmes au tout début de leurs apprentissages en programmation.
Si vous voulez faire fuir tous ceux débutants en programmation venant demander un petit coup de main, z'êtes sur la bonne voie.
J'aurais compris ces réactions envers une personne demandant qu'on lui fasse tout son boulot sans avoir fait la moindre chose, mais ici je ne comprends pas.
Heureusement qu'il y a encore des gens prêt à assister les débutants, merci à eux.
# Oui
Posté par alouali (site web personnel) . Évalué à 3.
C'est payé comment et combien ?
[^] # Re: Oui
Posté par Eh_Dis_Mwan . Évalué à -1.
Mets un print (n) juste avant la boucle
# un None qui apparaît...
Posté par lolop (site web personnel) . Évalué à 2.
Dans
supprimerPremiereOccurence
, si la condition est fausse, la fonction retourne quoi?Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: un None qui apparaît...
Posté par lolop (site web personnel) . Évalué à 3. Dernière modification le 07 mars 2019 à 22:57.
Et mets en page ton code (voir l'aide mémoire de la syntaxe wiki avec trois ` en bas de la page de rédaction). Car du code Python sans avoir l'indentation… aye.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Parenthèses
Posté par _kaos_ . Évalué à 2.
Hello,
Comme dit dans le premier commentaire, il va falloir commencer à envisager sérieusement de payer pour avoir des conseils :p (un job de prof quoi).
Comme dit aussi un peu ensuite, il faut apprendre à poster du code correctement. Surtout pour du python, où l'indentation est importante.
Enfin, et juste à mon avis, en mettant des parenthèses là où il faut, ça devrait marcher mieux. Je te laisse chercher afin de bien comprendre.
Pour aller plus loin : https://docs.python.org/3/reference/expressions.html
Cherche la précédence entre les opérateur
>
,and
et==
. Une fois ça compris, tu comprendras le message d'erreur.Matricule 23415
# Des outils pour toi
Posté par lolop (site web personnel) . Évalué à 3.
Tu peux essayer ton script sur Python Tutor, ou encore en mode débogage dans Pyzo (ou autre IDE), tu verras ainsi quelles valeurs sont manipulées, où tu passes dans ton code, et tu pourras apprendre en identifiant ton erreur.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Mystere
Posté par Panhwein . Évalué à 1.
Mystere…
[^] # Re: Mystere
Posté par Panhwein . Évalué à 1.
Mais ca va te couter 15 euros, je prend que paxum :)
[^] # Re: Mystere
Posté par Panhwein . Évalué à 1.
Je me pause une question.
Les profs de francais on l'habitude des copier/coller de wikipédia, ils voyent les même chaque année.
Et ils sanctionnent légérement.
Si j'etais prof et que je gauler un éléve poster ses devoir "complets" sur linuxfr ou stackoverflow, combien j'enleverais de points?
Zero pour des questions technique ou des conseils sur le type de l'erreur(ca va dans le sens de la recherche).
Par contre, pour un devoir complet, je mettrais un 5/20 de base pour l'effort d'avoir mal codé un code bugué :)
Et moins 2 point pour les nom de fonction ou variable en francais.
Sadique ;)
[^] # Re: Mystere
Posté par _kaos_ . Évalué à 3.
Salut,
Play !
Matricule 23415
# Re: ...
Posté par _kaos_ . Évalué à 3.
Salut,
Quand vous déboulez à deux ou trois avec des questions un peu basiques sur vos exercices de cours… bin le forum s'auto-défend. Plouf, moinssé, zou, next.
Notez qu'aucun modérateur n'a supprimé vos dites questions.
Personne n'a envie de vous répondre ? Bin normal. On n'est pas là pour remplacer votre prof (qui est payé, lui, pour répondre à vos questions).
Que les devoirs soient notés ou pas n'est pas le problème : le gros problème est que si vous ne comprenez pas les réponses.
Matricule 23415
# Re: ...
Posté par Marco . Évalué à 2. Dernière modification le 08 mars 2019 à 13:21.
Commence par lire ce que te dit ton interpréteur (ce n'est pas un compilateur), essaie de voir ce que vaut n avec un print. Ton interpréteur semble te dire que n est à None à un moment donné.
Donne des vrais noms à tes variables, pour que les gens qui te lisent puisse comprendre le travail plus rapidement et donc envie de te répondre.
# Bon, j'aurais fais ca
Posté par Panhwein . Évalué à 1. Dernière modification le 08 mars 2019 à 20:39.
Déjà j'ai du mal à lire ton code, les parametres suivent pas entre les functions.
J'imagine que le premier c'est un tableau, le deuxieme le nombre à supprimer, et le troisième(la profondeur?)
Chez moi, ca donnerais ca:
[^] # Re: Bon, j'aurais fais ca
Posté par Panhwein . Évalué à 1. Dernière modification le 08 mars 2019 à 14:08.
J'ai pas trouvé la balise pour mettre le code en forme :( dsl
!/usr/bin/env python, oublie pas les slash.
C'est horrible sérieux. Si quelqu'un peut mettre la bonne balise svp!
[^] # Re: Bon, j'aurais fais ca
Posté par Panhwein . Évalué à 1.
J'ai trouvé je pense, trois ' c'est ca?
Mais ya gandalf qui me dit… "VOUS NE PASSEREZ PAS"
[^] # Re: Bon, j'aurais fais ca
Posté par lolop (site web personnel) . Évalué à 2.
Nan, trois ` pas trois '
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Bon, j'aurais fais ca
Posté par Panhwein . Évalué à 1.
Merci!
[^] # Re: Bon, j'aurais fais ca
Posté par Panhwein . Évalué à 1. Dernière modification le 08 mars 2019 à 21:07.
Il marche même pas ce code! J'ai return trop tot :
# Re: ...
Posté par Panhwein . Évalué à 1.
Je te l'accorde, c'est problème d'algo à la limitte.
Mais avant toi ya un gars qui à posté ces trois ou quatres devoir, le prend pas méchament :)
# Ti conseil
Posté par Panhwein . Évalué à 1.
amho, pour virer un element d'un tableau, une function suffit. Voir une ligne si tu ne fais pas cette opération régulierement.
Fait du code simple! Enlever un element = une fonction, pas trois qui s'enchainent avec des nom de parametres different(illisible) et encre moins une qui retourne un appel de fonction. Prend le retour, teste le, retourne le.
Pense simple: 1 function, un truc.
Je suis pas un pro du python, mais l'approche est la même avec tous les languages.
C'est trolldi? A part le Fork peut-être.
# Correction
Posté par lolop (site web personnel) . Évalué à 4. Dernière modification le 09 mars 2019 à 12:52.
Bon, ton code fait très programmation "C" avec un tableau de taille fixe dont on gère le nombre d'éléments séparément. En Python on a un type
list
qui est un conteneur dynamiques, qui dispose des opérateurs/méthodes:t.remove(valeur)
,del t[index]
… et dont on peut connaître le nombre d'élémentslen(t)
.Bref, tu fais du C en Python, qui plus est avec un algo très compliqué pour réaliser une opération simple. Mais en restant dans ton code, en ajoutant docstring et commentaires (conseil, fait le, même pour toi, ça permet quand on lit/écrit d'identifier des écarts entre ce qu'on pense que la fonction fait et ce qu'elle fait réellement), ça donnerais:
Note: Là on fait directement des modifications dans la liste passée en paramètre ; s'il n'y a pas de contrainte on préférera créer une nouvelle liste et la retourner (éviter les effets de bord).
Et ça se fait même en 1 ligne avec les listes en compréhension:
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# merci à ceux apportant leur aide aux débutants
Posté par gled . Évalué à 1.
C'est fou ça.
Quelqu'un vient demander un peu d'aide poliment avec un début de script et l'incompréhension d'une erreur, donc un peu de travail derrière, et paf, on lui envoie que des commentaires désobligeants, on le catalogue de suite comme un pov' nul d'étudiant qui sait rien faire, bonjour les préjugés, à croire que tous ceux postant ce genre de commentaires n'ont jamais galéré sur de simples problèmes au tout début de leurs apprentissages en programmation.
Si vous voulez faire fuir tous ceux débutants en programmation venant demander un petit coup de main, z'êtes sur la bonne voie.
J'aurais compris ces réactions envers une personne demandant qu'on lui fasse tout son boulot sans avoir fait la moindre chose, mais ici je ne comprends pas.
Heureusement qu'il y a encore des gens prêt à assister les débutants, merci à eux.
[^] # Re: merci à ceux apportant leur aide aux débutants
Posté par _kaos_ . Évalué à 1. Dernière modification le 09 mars 2019 à 22:43.
Salut :)
Quelqu'un déboule avec un nouveau compte comme les deux précédents et poste mal (l'OP a été un peu corrigé depuis je crois).
Que veux-tu ?
Moi, je veux bien ne pas catégoriser. Mais tu as vu des réponses intéressantes ? Un seul retour ?
Un, on va dire que c'est une erreur. Deux un copieur. Trois, on tombe "statistiquement" dans un profil. :p
Matricule 23415
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.