Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours « Démarrez votre projet avec Python »

Est-ce que ce monde est sérieux ?

6 février 2017 à 14:18:52

Bonjour à tous,

Ça doit faire une éternité que je n'ai pas posté de sujet ici, mais l'heure est grave. Nous connaissions tous le cours « Apprenez à programmer en Python » de ce site, qui malgré de nombreux défauts et aucune correction apportée aux points soulevés, restait relativement acceptable.

Mais j'ai récemment découvert le cours « Démarrez votre projet avec Python » et ai rarement vu un torchon pareil. Alors je vais en faire la lecture et tenter de dresser une liste exhaustive de ce qui ne va pas (je devrais peut-être faire l'inverse et lister ce qui va, ça irait plus vite), dans l'espoir de voir cela corrigé (lol).

Je n'ai pas regardé les vidéos, et ne m'intéresse qu'au texte.

Partie 1 — Faites connaissance avec Python

Pourquoi apprendre Python ?

  • «  et vous n’avez pas à utiliser un logiciel spécifique pour voir le résultat de votre code. », mis à part l'interpréteur ;
  • « Une de mes convictions pédagogiques les plus profondes est qu’on apprend en faisant, et uniquement en faisant. », bon, c'est sûrement une position idéologique, mais ça part mal.

Installez Python !

  • Pour l'installation sous GNU/Linux, l'auteure fait télécharger l'archive contenant l'interpréteur, qui sera inutile dans la plupart des cas ;
  • « La console est un petit programme qui vous permet d’interagir directement avec votre ordinateur en parlant son langage. », c'est quoi « directement » ?
  • « bash et DOS n’ont pas les mêmes super-pouvoirs que Python. », ah ?
  • « c’est à dire un programme qui va comprendre les instructions écrites en Python et les “transformer” en langage binaire », c'est quoi le langage binaire ?

Découvrez le vocabulaire de Python

  • « Une variable stocke une information dans la mémoire de l’ordinateur », je dirais plutôt qu'elle garde la trace d'une information plus qu'elle ne la stocke, mais bon ;
  • « Pour afficher le contenu d’une variable, vous écrivez simplement son nom. », non, il ne s'agit là que d'un comportement particulier de l'interpréteur interactif ;
  • « Et comment la supprimer ? En utilisant la fonction del() (nous en parlerons plus tard) », del est un mot-clé et non une fonction, il s'utilise plutôt sans parenthèses ;
  • « Car nous pouvons manipuler les informations de la même manière que des objets : nous pouvons définir une variable, la modifier, la supprimer… », l'objet c'est quand même un tout petit peu plus que cela ;
  • L'exemple « Un est inférieur à deux » présente comme code 1 < 1 (qui devrait d'ailleurs s'évaluer à False plutôt qu'à True, preuve que les exemples n'ont pas été exécutés dans l'interpréteur) ;
  • « Pour créer une nouvelle liste, ouvrez des crochets, séparez les objets par des virgules (sauf le dernier !) et fermez les crochets. », sauf le dernier ? Si, si, le dernier élément doit aussi être séparé des précédents par une virgule ;
  • « Pour accéder à un élément stocké, vous écrivez le nom de la liste puis sa position. », avec les crochets aussi, ça peut servir ;
  • « À stocker des données dont la valeur est importante et ne doit pas changer. » Bof, les tuples servent surtout pour des questions d'optimisation, et parce qu'ils sont hashables ;
  • « À la manière d’un vrai dictionnaire, vous accédez aux différentes définitions en regardant la lettre qui vous intéresse. », ce n'est pas ça l'analogie : ce sont les définitions qui sont associées aux mots, pas aux lettres ;
  • «  Puis nous indiquons le nom de la première clé », non, juste la clef, pas son nom ;
  • « Si nous reprenons notre comparaison avec un tableur, un dictionnaire peut être vu comme une nouvelle feuille », euh, la comparaison pour les listes s'entendait, mais là ce ne serait valable que pour un dictionnaire dont toutes les valeurs seraient des listes.

Quiz : Découvrez les bases de Python

  • C'est intentionnel que toutes les propositions de la question 5 (« La console sert à... ») soient valides ?
  • Et que toutes celles de la question 6 (« L'interpréteur Python sert à... ») soient fausses ?
  • J'ai l'impression que la question 7 mélange le type de l'objet et sa représentation. une chaîne de caractères c'est un ensemble ordonné de caractères, sans guillemets ;
  • Encore pire pour la question 8, qui ne fait pas la différence entre une variable et le nom d'une variable.

Partie 2 — Posez les fondations de votre programme

Créez votre premier script

  • « Avant de continuer notre programme, j’ai bien envie de ne plus utiliser l’interpréteur. », j'ai hâte de voir ça.

Comparez des valeurs avec les opérateurs

  • « En plus les accents français ne sont pas acceptés dans les noms de variables. », si, ils sont déconseillés mais parfaitement valides ;
  • « Quand vous faites une division, parfois le résultat n’est pas zéro. », il n'est d'ailleurs jamais 0 tant que l'opérande de gauche n'est pas 0 ;
  • L'explication du modulo est quand même très confuse, aucune référence explicite au reste de la division euclidienne n'est donnée.

Ajoutez un peu de logique avec les conditions

  • Le caractère utilisé pour délimiter les chaînes de caractères () est incorrect ;
  • « Afin de différencier ces actions, qui sont à l’intérieur d’une condition, du reste de votre programme, vous ajoutez deux espaces au-début de la ligne. », la PEP8 en recommande plutôt 4 ;
  • « Comment quitter le programme ? En utilisant le mot-clé ‘pass’  », ah ouais, j'aurais dû y penser… Sérieusement ? Je vois bien ce que l'auteure essaie de dire dans le cas présent, mais quand même.

Structurez votre programme en utilisant les fonctions

  • « Afin d’afficher dans la console une citation au hasard, nous devons avant choisir une position aléatoirement dans la liste. », ou nous devons utiliser sample ;
  • « entre une valeur minimale (0, le début de la liste) et une valeur maximale (le nombre total d’items). », le nombre d'éléments moins un, sinon ça risque de poser problème ;
  • « Une fonction est un ensemble de commandes regroupées sous un seul nom unique. », non puisqu'il peut y avoir plusieurs noms sur une seule et même fonction ;
  • « Vous ne pouvez exécuter une fonction vide ou qui ne contient que des commentaires. », pour moi exécuter une fonction c'est l'appeler, pas la définir ;
  • « Dans ce cas, utilisez le mot-clé “pass” qui indiquera à Python que vous souhaitez effectivement exécuter cette fonction et qu’il ne s’agit pas d’un oubli. », il sert décidément à tout ce fameux pass ;
  • Le caractère utilisé pour délimiter les chaînes de caractères () est incorrect ;
  • « Abusez-en, cela permet aux lecteurs de mieux comprendre votre logique ! » (à propos des commentaires), n'en abusez pas, non.

Répétez une action grâce aux boucles

  • «  la boucle s’exécutera tant qu’une condition est remplie (dont tant qu’elle renverra la valeur True) », une condition ne renvoie rien ;
  • La fonction show_random_item n'affiche plus un élément comme c'était prévu au départ, elle se contente maintenant de le retourner ;
  • « En attendant de voir comment interagir avec l’utilisateur, définissons la variable à la fin de notre programme pour fermer la boucle. », pourtant la fonction input a été présentée dans le chapitre précédent ;
  • La boucle for d'exemple, reprise dans le reste du cours par la suite, n'a aucun intérêt. Et c'est sûrement ça le plus grave dans ce cours, que l'auteure ne se rende pas compte de l'énormité de cette boucle.

Quiz : Les fondations

  • Je ne sais pas d'où sort la première question, ça n'a pas trop de rapport. Sinon je serais tenté de répondre « faux », mais je ne sais pas, je me dis que ça n'est peut-être pas la réponse attendue ;
  • Tous les exemples de la question 6 sont faux, il n'y figure jamais de : après le if ;
  • Il n'y a pas de choix valide pour la question 7 ;
  • Question 9, pour utiliser une fonction, c'est que celle-ci est déjà définie ;
  • La question 10 est limitée, print sert à plus que ça.

Partie 3 — Manipulez des objets

Modifiez des chaînes de caractères

  • Rien que le titre du chapitre envoie du rêve.

Modifiez des nombres

  • Idem ;
  • « Comme en mathématique, les opérations sont réalisées dans l’ordre, de gauche à droite. », ça dépend surtout de l'opérateur et de son associativité : l'opérateur d'exponentiation est associatif à droite par exemple.

Rangez des données dans des listes

  • « Chaque élément est associé à un index, c’est à dire à un chiffre qui indique sa position dans la liste. », un nombre ;
  • Il y a une ligne dans la description de pop qui correspond à remove
  • Le paramètre de remove n'est pas optionnel, pas de « si vous passez une valeur » qui tienne.

Organisez vos données dans un dictionnaire

  • Plusieurs d'erreurs dans le code du programme donné à la fin :
    • La fonction capitalize qui ne sert à rien ;
    • Les variables n_character et n_quote qui sont initialisées à None ;
    • La répétition de l'input.

Quiz : Manipulez des objets

  • Pour la question 1, il y a bien une méthode qui fait cela, mais ce n'est pas la seule manière de faire, tout dépend de ce que l'on cherche à obtenir ;
  • J'ai du mal avec la question 6, il peut exister un même élément qui serait référencé plusieurs fois dans la liste, à des index différents ;
  • De même pour la question 8 ;

Partie 4 — Utilisez des ressources externes

Installez votre premier module

  • « Afin de ne pas alourdir Python, aucun module n’est chargé par défaut. », aucun ?
  • « Le souci, dans ce dernier cas, est qu’il faut éviter de travailler avec plusieurs module dans le même projet. En effet, elles peuvent (même si c’est assez rare) utiliser un même nom de méthode. », le dernier cas permet justement de prévenir les conflits puisque chaque objet importé est explicitement indiqué, c'est le second cas (from ... import *) qui est à proscrire ;

[BONUS] Stockez des citations dans un fichier avec le module json

  • Les exemples de fichiers JSON sont faux, il y a plusieurs documents à la suite ;
  • Il y a des problèmes d'indentation dans les exemples de code Python.

[BONUS] Collectez des citations automatiquement avec Scrapy

  • Dans le code d'exemple « nettoyé », la lecture des fichiers JSON est répétée à chaque itération de la boucle ‽
  • Aucune explication sur le __name__ == '__main__', soit.

Est-ce que ce monde est sérieux ?

Et je passe sur l'aspect pédagogique et le fil conducteur du cours (je trouve que toutes les notions sont abordées dans le désordre).

Bon, c'est donc ça les nouveaux cours certifiants d'Openclassrooms ? Vous vous êtes un peu intéressés à la qualité de ce cours avant de le publier ou ça c'est passé comment ?

Vous vous rendez compte que c'est encore nous qui allons devoir corriger ça en réorientant correctement les débutants, et en leur faisant désapprendre toutes ces inepties ?

Un grand merci, vraiment.

-
Edité par Benzouye 6 février 2017 à 16:31:20

  • Partager sur Facebook
  • Partager sur Twitter
6 février 2017 à 16:03:36

Salut Antoine :)

J'ai feuilleté le début du cours. Mais, ça, on s'en fout car je n'ai pas le niveau pour critiquer.

En revanche, j'ai eu l'idée (lumineuse ? ^^), de cliquer sur son profil.

Certes, l'auto-proclamation de niveau me fait un peu tiquer, mais, Arnaud et toi pouvez vraiment vous permettre le 3/3 en Python (vos articles, et cours en sont d'excellentes preuves). Notre (charmante "Bah oui ma chère Céline, je me permets de juger ton faciès :)") auteure n'aurait donc aucune compétence en Python, mais, elle fait quand même un cours.

Je vous fais un aveu, j'hésite à faire un cours sur comment tricoter ses vêtements, mais, je suis une bite en couture.

Mademoiselle (ou Madame) toucherait à l'info depuis 3 ans. Faire un cours sur un langage de programmation n'est pas chose aisée, alors, après 3 ans dans le domaine seulement, est-ce bien raisonnable ?

Pour en revenir à l'image de profil. Analysons rapidement celle d'Arnaud (nohar) et Antoine (entwanne) : on ne les voit pas ; l'image d'Arnaud a l'air d'être un "parialacon rigolo" (dans zds, informaticien zero utilise également une image de lama), pour celle d'Antoine, c'est, je pense, une passion pour les Schtroumpfs. Si on s'arrête là, on est en droit de se demander quel crédit accorder à ces deux personnes en matière d'informatique, ça fait pas très "pro" (et pourtant, quand on connaît le parcours et le boulot (au moins en 2014) d'Arnaud).

Céline, elle, c'est une photo dans un endroit pas geek du tout, limite bureau de la DRH ou du chef Marketing (ou inversement dans le genre, hashtag égalitédessexes). Si on s'arrête là, on peut se permettre de lui accorder du crédit en matière de... professionnalisme (et pourtant, quand on connaît le parcours de Céline).

De plus, tu n'en as pas parlé, et je le comprends. Mais, Python et facile (mouais, n'importe quel langage de programmation n'est pas facile à apprendre, il est peut-être plus aisé que le C, ça reste discutable), ou encore, Python et 4 heures (WOW PUTAAAAAAAIN !!!).

Alors, j'annonce : en 2025, on aura un cours : "Fais trembler un pays en devenant hacker* en 10 minutes, montre en main !"

---

hacker* : j'ai volontairement pris le mauvais terme afin que le cours passe dans les journaux télévisés. Si j'avais utilisé le bon mot, le producteur du JT aurait interpellé le correspondant : "Pourquoi tu me parles de biscuits apéritifs alors que je veux traiter un sujet sur l'informatique ?"

  • Partager sur Facebook
  • Partager sur Twitter
6 février 2017 à 16:14:42

Bonjour, bien que sujet concerne un langage de programmation, il concerne surtout la manière dont est réalisée ce cours, sa place est plus dans le forum rédaction de cours.

Je déplace ce sujet et je vais inviter l'auteur à venir en discuter avec vous.

@tomsawyer1311 merci de rester sur le contenu de ce cours, c'est l'objet de la discussion ici. Je ne pense pas que les photos de profils quelles quelles soit aient une valeur probante sur la compétence/connaissance du Python. C'est hors sujet.  

-
Edité par MarionBibifoc 7 février 2017 à 12:29:48

  • Partager sur Facebook
  • Partager sur Twitter
6 février 2017 à 16:24:45

Dommage pour le déplacement, je pense que ça concerne avant tout les lecteurs (j'ai peu d'espoirs que le contenu soit corrigé, surtout s'il s'appuie sur des vidéos), et avait probablement plus de visibilité dans le forum Python.

Je voulais aussi ajouter à mon message que j'avais eu peur en voyant qu'un autre cours semblait en rédaction.

Je dis « voulais ajouter », car mon post est peut-être trop gros, mais il m'est impossible de l'éditer (ça m'ouvre la page d'accueil du site à la place du formulaire d'édition…). J'en profite aussi pour dire qu'il fallait lire « est-ce que ce monde est sérieux ? », et pas « mode », faute qui apparaît malheureusement à deux reprises :(

  • Partager sur Facebook
  • Partager sur Twitter
6 février 2017 à 16:31:59

Pour le déplacement de sujet je suis d'accord que la visibilité est plus grande sur le forum Python, je crée une alerte pour avoir avis d'autre modérateur.

@tomsawyer1311 je vous envoie un MP

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 février 2017 à 17:02:23

En tout cas, en attendant une improbable réécriture de ce cours, ce poste vient dans mes favoris. Je saurais où rediriger ceux qui me demanderont pourquoi fuir ce cours (en l'état) !

Merci entwanne pour cette relecture complète (c'est du taff mine de rien), et j'espère qu'OC et/ou l'auteur auront à cœur de prendre toutes ces notes et ces remarques aux sérieux.

PS: Ça faisait longtemps que je n'avais pas mis les pieds dans la section « cours » de ce site. Je ne me demande pas pourquoi...

  • Partager sur Facebook
  • Partager sur Twitter
6 février 2017 à 17:54:18

Salut les rageux de ZdS,

Ca faisait longtemps que je n'avais pas vu un tel déversoir concentré de haine (ça m'en rappelle des souvenirs :'-), merci pour ce moment de nostalgie.

Il y a une très grosse dose de mauvaise foi dans ces remarques. N'importe quelle personne qui fait un peu attention s'en rendra vite compte.
Il y a aussi des bonnes remarques (environ 40%) dont on va s'efforcer de tenir compte et pour lesquelles on te remercie, malgré le ton désobligeant. Je vais fermer le topic avant de vomir, mais on le rouvrira pour indiquer qu'on a fait une mise à jour.

Je note que l'auteur du message n'est pas désintéressé puisqu'il vient dénigrer le cours d'une autre personne, pour mettre en avant son propre cours dans la signature. Belle technique marketing.

Je note que l'auteur du second message... est purement et ouvertement sexiste. Ce genre de comportement est intolérable, tu vas être banni, ah ben tu es banni voilà.

Merci d'avoir contribué au sexisme ordinaire dans le milieu technique les gars, c'est un peu aux soldats anonymes comme vous qu'on le doit. 

Des bisous.

  • Partager sur Facebook
  • Partager sur Twitter

If you'd like to join us, read "How do we work at OpenClassrooms"! :)