Désolé pour cette réponse tardive. Les points qui ne figurent pas dans ce message ont été pris en compte.
Tu considères Python comme installé par défaut sur GNU/Linux, c'est en partie faux.
C’est pour ça que j’ai mis « généralement ». En plus, j’ai plus souvent rencontré Python 2 par défaut. C’est pourquoi j’ai donné l’exemple pour une installation sous Debian et ses dérivées mais, tout comme pour la partie Mac, l’aide d’un utilisateur plus régulier est la bienvenue.
Le lecteur est vouvoyé dans l'ensemble du tutoriel, mais parfois il est considéré au singulier, et d'autres au pluriel.
Je reprendrai les chapitres pour les mettre au pluriel.
Au moment d'introduire les variables, tu indiques au lecteur qu'il a déjà manipulé des variables de deux types. C'est faux, il y a entre autres les tuples (lors de l'assignation multiple), et les fonctions ;
J’ai pris la décision de ne pas mentionner les tuples tout de suite pour ne pas submerger le lecteur. Je ne pense pas que de l’apprendre quelques chapitres plus loin porte préjudice, au contraire. De même pour les fonctions, je ne sais pas si introduire si tôt le fait qu’une fonction est une variable est nécessaire pour un débutant. Je reste néanmoins ouvert sur la question.
Tu parles de condition qui renvoie True. Une condition ne renvoie rien, elle s'évalue ;
Abus de langage, je vais corriger.
Je trouve maladroit le passage sur if a == True. a est déjà un booléen dans ton cas, a == True en est un autre, pourquoi pas tester a == (a == True) == True ?
Le but est d’essayer de faire comprendre que par exemple, après avoir écrit une fonction divisible7
qui renvoie un booléen, il n’est pas nécessaire d’écrire if divisible7(123456) == True :
mais juste if divisible7(123456) :
. Je vais essayer de clarifier l’idée, et si je n’y arrive pas, j’essayerais de placer ceci comme une remarque plus loin.
Tu commences par « illustrer l'utilité des boucles » sans expliquer de quoi il s'agit ;
L’idée est de poser le problème, et ensuite de présenter les boucles comme une solution à ce problème.
Tu préconises d'utiliser des noms anglais pour les variables, et tu les nommes en français tout le long du tutoriel ;
Il me semble que la philosophie de ZDS est d’être le plus francophone possible. Le tuto est donc facilement compréhensible par des personnes ne parlant pas l’anglais en l’état actuel. Si le lecteur possède des notions d’anglais, libre à lui de les utiliser : il ne s’agit que d’une recommandation.
Tu donnes des conventions sur le nom des variables, mais pas sur celui des fonctions ;
J’utilise « Les noms des fonctions suivent les mêmes règles que les noms des variables » pour éviter de faire un copier/coller de la liste. Je vais rajouter que les conventions sont aussi les mêmes
Tu parles de retourner une erreur, encore une fois le terme est inexact, une erreur est levée/lancée, pas retournée ;
Un autre abus de langage, en effet. Mauvaise habitude, quand tu nous tiens…
Tes explications sur la portée des variables locales sont assez confuses, voire fausses. Il ne s'agit pas de droit de lecture/écriture, juste que quand Python voit a = … dans le corps de la fonction, il considère que la variable a est locale au scope. Donc une lecture avant l'assignation lève une erreur, car la variable locale n'existe pas encore ;
Les droits étaient une idée pour tenter de mettre en évidence la différence entre les différents cas. Je vais voir comment mieux tourner l’idée.
Tu montres global, ce qui me semble précipité, tu pourrais l'introduire beaucoup plus loin dans le tutoriel, et en profiter pour parler de nonlocal ;
J’ai placé global assez tôt dans le tutoriel dans le cas où cette solution apparaitrait dans un forum. Le but est ici de prévenir que l’utilisation de global peut à long terme poser des problèmes si elle est mal maitrisée, même si sur le coup ça marche. Je laisse pour l’instant cette partie où elle est, mais si je lui trouve une place dans la suite du cours, elle sera reculée.
Il n'est peut-être pas pertinent de parler des lambdas aussi tôt dans le tutoriel ;
En effet, je vais les stocker dans un coin en attendant un moment plus opportun.
Plutôt qu'insister sur la présence de l'entête précisant l'encodage, il me paraîtrait plus judicieux de l'omettre et d'insister pour que le développeur configure son éditeur de texte en UTF-8 ;
Cette solution me parait plus souple. Si pour une raison quelconque le lecteur ne veut ou ne peut pas utiliser UTF-8, il pourra spécifier son encodage.
À aucun moment dans le tutoriel tu ne parles de help, ça me semble important de le présenter quand l'utilisateur en est encore à la console interactive. De même, il serait intéressant de tout de suite montrer comment exécuter la console interactive avec un fichier en paramètre.
Je vais trouver un endroit où présenter help
. Je n’ai pas compris ce que tu entends par « exécuter la console interactive avec un fichier en paramètre ».
Concernant l’avancement, la beta sera mise à jour quand le chapitre sur les listes sera un peu plus étoffé. Suite à certains retours, le premier TP sera réécrit avec un exercice moins orienté mathématiques. Le changement sera fait en même temps que l’écriture du deuxième TP, dans le but d’essayer de lier les deux exercices.