Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice Python

Anonyme
    7 novembre 2010 à 13:02:24

    Vous partez tous du principe que le but de ses études est d'apprendre à programmer en python. Mais il est possible que ce soit un cours d'algorithmique où le langage n'est pas important et ils utilisent python par simplicité (plutôt que le C par exemple).

    Dans ce cas utiliser les spécificités du langage n'est pas dans l'esprit du cours.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      7 novembre 2010 à 13:10:02

      Citation

      He who can do more can do less



      • Partager sur Facebook
      • Partager sur Twitter
        7 novembre 2010 à 13:42:21

        Ouais, mais forcer pour autant les élèves à utiliser une boucle while pour parcourir une chaine de caractères… non, désolé, quoi.

        Pour apprendre à utiliser la boucle while, il existe d'autre exos moins crades que ça, et pour parcourir une séquence, même un for idx in xrange(len(liste)): est moins moche.

        Je peux comprendre qu'il ne veuille pas aborder le principe des itérateurs (la boucle for à-la-python) tout de suite, mais ce n'est pas une raison pour forcer les élèves à faire des choses sales. Comment leur faire prendre de bonnes habitudes, sinon ?

        • Partager sur Facebook
        • Partager sur Twitter
        Zeste de Savoir, le site qui en a dans le citron !
        Anonyme
          7 novembre 2010 à 13:54:00

          Qui puis-est algorithmiquement parlant, c'est aussi très crade.

          Le professeur a coché deux fois dans la case tout faux.
          • Partager sur Facebook
          • Partager sur Twitter
            7 novembre 2010 à 14:13:24

            D'ailleurs, je me demande aussi pourquoi on ne met pas en avant plus rapidement les boucles for en python. En C, ça peut se comprendre car le fonctionnement d'une boucle for dans ce langage est un peu plus complexe que celui du while (puisque c'est un while déguisé), mais en Python, c'est quand même drôlement plus instinctif !

            "Pour chaque élément de ma liste, je fais ça" (for element in liste: ), c'est quand même conceptuellement plus simple que "tant que mon expression booléenne est évaluée à True, je fais ça" !

            Que le mécanisme derrière (les itérateurs) soit plus complexe, soit, mais rien n'oblige le prof à tout livrer d'un coup dans la tronche des élèves : peut-être qu'il est plus important de toucher l'intuition initiale du débutant que de respecter un ordre artificiel selon la complexité "réelle" (par opposition à "conceptuelle") des notions en question.
            • Partager sur Facebook
            • Partager sur Twitter
            Zeste de Savoir, le site qui en a dans le citron !
              7 novembre 2010 à 14:43:34

              Citation : NoHaR


              "Pour chaque élément de ma liste, je fais ça" (for element in liste: ), c'est quand même conceptuellement plus simple que "tant que mon expression booléenne est évaluée à True, je fais ça" !



              Je suis de cet avis aussi et je pense que pour un débutant la boucle while est plus difficile à manier que la boucle for. Mais utiliser une boucle for nécessite de connaître la notion d'itérable, au moins sur les listes et/ou les chaînes. Par ailleurs, la boucle for manque parfois de souplesse parce qu'on a juste accès à l'élément courant, si on veut plus il faut du enumerate ou alors faire un truc du genre for item in range(len(mon_iterable)). De son côté, la boucle while réclame juste de savoir ce qu'est une booléen. Hélas, il faut constater que souvent la boucle est employée à contre-emploi, comme une boucle for.
              • Partager sur Facebook
              • Partager sur Twitter
                7 novembre 2010 à 14:58:33

                Peut-être à ce moment-là qu'il est plus judicieux d'étudier les types est les boucles de manière plus itérative. Je veux dire par là, introduire les nombres, les booléens, et les chaines de caractères en tant qu'objets complets (ne pas insister sur le caractère d'une "chaîne" tout de suite, mais plus sur l'objet "texte"), introduire une boucle while dans des exemples adaptés (tant que le mot de passe n'est pas "s'il te plait", dire à l'utilisateur d'aller se faire voir), puis seulement introduire les séquences, conjointement avec la boucle for, et re-découvrir les chaines de caractère comme des objets itérables.

                Le problème de la boucle while (enfin du concept du while), en fait, c'est surtout son utilisation historique. C'est vrai que le concept d'objet "itérable" n'est pas facile à saisir dans sa globalité dès le départ, mais je pense que l'introduire avec l'outil de parcours adapté (le for, donc), permet d'éviter les contre-sens.
                • Partager sur Facebook
                • Partager sur Twitter
                Zeste de Savoir, le site qui en a dans le citron !
                  7 novembre 2010 à 16:38:33

                  Citation : NoHaR

                  C'est vrai que le concept d'objet "itérable" n'est pas facile à saisir dans sa globalité dès le départ, mais je pense que l'introduire avec l'outil de parcours adapté (le for, donc), permet d'éviter les contre-sens.



                  Je ne suis pas tout à fait d'accord avec toi. Honnêtement, avoir une intuition de ce qu'est un itérable est à la portée de n'importe qui. Évidemment, décrire le mécanisme complet n'est pas évident, mais faire comprendre l'idée générale, qu'un itérable c'est un truc qui contient plusieurs bidules, qui peuvent être parcourus successivement, je ne pense pas que ce soit inaccessible. Les types en revanche, sont à mon avis plus complexe pour quelqu'un qui n'a pas une formation minimum en maths (ou qui dormait en cours).

                  Par contre, je plussoies le fait qu'il y a d'autres moyens d'introduire la boucle while que d'utiliser un cas où elle est non seulement pas utile, mais carrément génante / gonflante / etc.. La boucle while est importante car elle est indispensable dans certains cas. Il serait plus judicieux de mettre en avant ces cas précis ou elle est indispensable, plutôt que de dégouter les élèves avec une cacophonie d'indices, et une doube boucle parfaitement non justifiée.

                  Citation : nax

                  Vous partez tous du principe que le but de ses études est d'apprendre à programmer en python. Mais il est possible que ce soit un cours d'algorithmique où le langage n'est pas important et ils utilisent python par simplicité (plutôt que le C par exemple).

                  Dans ce cas utiliser les spécificités du langage n'est pas dans l'esprit du cours.



                  A mon sens, l'algorithmique c'est une gymnastique de l'esprit visant à utiliser de façon appropriée les outils de bases: conditions, boucle for, boucle while. Pour moi, cet exercice est un mauvais exercice d'algo:

                  - Il est trop directif. L'algorithmique, c'est avant tout un travail de créativité et de réflexion. Un énoncé trop directif, c'est comme une partie de cache-cache dans laquelle chacun hurle où il est caché. C'est sans intérêt.

                  - Il ne met pas en avant la différence for / while. Un proverbe dit que "Pour l'homme qui ne possède qu'un marteau, tout problème est un clou". Ben là c'est pareil, si on apprend aux élèves à utiliser une boucle while là où une boucle for est plus appropriée, ils ne comprendront jamais la nuance, et ils essaieront de recaser le while à mauvais escient.

                  - Il dégoute les élèves. Quand j'ai lu le début de l'énoncé, j'ai d'abord pensé aux idioms python. En lisant la suite, j'ai essayé de m'imaginer comment j'aurais codé la fonction avec les boucles while, mais ça m'a vite saoûlé. Le simple fait d'imaginer les erreurs d'indices, ça m'a passé l'envie de résoudre l'exercice. Alors que l'algorithmique, c'est censé être amusant.

                  Après, peut-être que le prof utilise une subtilité pédagogique: il montre à quel point c'est pénible d'utiliser les boucles while dans ce cas précis, et introduit par la suite les boucles for. Ou mieux, les fonctions python.

                  Qui sait...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 novembre 2010 à 16:49:42

                    Citation : Abraxasz

                    Citation : NoHaR

                    C'est vrai que le concept d'objet "itérable" n'est pas facile à saisir dans sa globalité dès le départ, mais je pense que l'introduire avec l'outil de parcours adapté (le for, donc), permet d'éviter les contre-sens.



                    Je ne suis pas tout à fait d'accord avec toi. Honnêtement, avoir une intuition de ce qu'est un itérable est à la portée de n'importe qui. Évidemment, décrire le mécanisme complet n'est pas évident, mais faire comprendre l'idée générale, qu'un itérable c'est un truc qui contient plusieurs bidules, qui peuvent être parcourus successivement, je ne pense pas que ce soit inaccessible. Les types en revanche, sont à mon avis plus complexe pour quelqu'un qui n'a pas une formation minimum en maths (ou qui dormait en cours).



                    Bah si, on est d'accord : itérer sur une séquence est quelque chose de conceptuellement simple même si le mécanisme qui tourne derrière demande plus de réflexion.

                    Par "itérable", j'entendais justement les séquences qui implémentent le pattern Iterator de Python : on est plus dans le mécanisme que dans l'intuition. Même si le fait qu'un SacDeBilles est un truc qui contient des billes, et qu'on peut "pour chaque bille dans mon SacDeBilles, la peindre en rouge" est très simple à comprendre, présenter le SacDeBilles comme ce qu'il est, un "itérable" qui implémente une méthode __next__, est à réserver pour plus tard.

                    Sur le fond, on dit la même chose.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Zeste de Savoir, le site qui en a dans le citron !
                      8 novembre 2010 à 9:22:01

                      Ah j'avais mal compris autant pour moi. On est effectivement d'accord :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 novembre 2010 à 12:32:38

                        Bonjour à tous,je viens de voir tous vos messages sur mon post. Donc tout d'abord,on apprend le python juste cette année car l'année prochaine on apprend le java ( autrefois les profs faisaient les deux premieres années en java et d'apres eux ils ont mis en place une année de python pour justement faire une "introduction" au language java si je peux le dire afin de montrer la structure de la programmation, de cette manière car apparemment le java est assez difficile.)
                        sinon on vient d'apprendre la boucle for qui me parait plus simple que le while,enfin je ne sais pas si c'est juste une impression...
                        Mais l'exercice avec les 2 whiles est vachement costaud. J'ai vu la correction mais incapable de le refaire..=S
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 novembre 2010 à 21:07:54

                          Python comme introduction à Java ... Intéressant...

                          Pour répondre à ta remarque sur les boucles while et for, je répète ce que j'ai dit, les deux ont leur utilité. En théorie, seule la boucle while est indispensable, étant donné que tu peux coder une boucle for avec une boucle while, alors que tu ne peux pas faire l'inverse. Il est donc capital que tu comprennes la différence entre les deux, et que tu saches dans quel cas utiliser l'une ou l'autre.

                          Ceci dit, la boucle for est souvent suffisante, et quand c'est le cas, elle est toujours plus simple à utiliser.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 novembre 2010 à 23:54:25

                            Java n'est pas intéressant.
                            Comme dit Abramachin, la boucle for n'est pas "plus simple" : elle est conceptuellement différente. On utilise for quand on doit faire un traitement pour chaque élément d'une séquence (comprends séquence au sens général, à savoir "des éléments qui se suivent), et while quand on doit effectuer des opérations tant qu'une certaine condition est (ou n'est pas) vérifiée.

                            Si on peut simuler une boucle for à l'aide d'une boucle while ("tant qu'on n'a pas fini de parcourir la séquence"), les deux n'ont pas le même sens. Selon le contexte, l'utilisation de l'une ou l'autre s'imposera et sera plus simple.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 novembre 2010 à 21:01:17

                              Citation : Maxibolt

                              Java n'est pas intéressant.
                              Comme dit Abramachin, la boucle for n'est pas "plus simple" : elle est conceptuellement différente. On utilise for quand on doit faire un traitement pour chaque élément d'une séquence (comprends séquence au sens général, à savoir "des éléments qui se suivent), et while quand on doit effectuer des opérations tant qu'une certaine condition est (ou n'est pas) vérifiée.

                              Si on peut simuler une boucle for à l'aide d'une boucle while ("tant qu'on n'a pas fini de parcourir la séquence"), les deux n'ont pas le même sens. Selon le contexte, l'utilisation de l'une ou l'autre s'imposera et sera plus simple.



                              tout a fait d'accord avec toi. mais pourquoi Java n'est pas intéressant?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 novembre 2010 à 5:12:33

                                Parce que quand tu connais Python, il n'apporte aucun concept intéressant qui t'apporte une nouvelle vision des choses.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 novembre 2010 à 9:46:09

                                  Ma remarque concernant Java était ironique. Disons que je trouve amusant qu'en plus de ne pas leur apprendre à distinguer les boucles for et while, leur prof commence par leur apprendre python, pour leur faire ensuite apprendre le Java. Je ne comprends pas la finalité pédagogique..
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    23 novembre 2010 à 18:37:39

                                    Citation

                                    Je ne comprends pas la finalité pédagogique..



                                    Il n'y en a pas, cherche pas ! :p
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 novembre 2010 à 20:41:32

                                      je me disais aussi ... -_-"
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Exercice Python

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown