Après lecture de ce cours, qui me paraît très bon pour l'apprentissage de la programmation, j'ai tiqué sur quelques points concernant le langage.
Premièrement, j'ai un peu de mal avec l'utilisation d'un interpréteur au sein du navigateur (surtout que tu dois en manipuler deux différents le long du cours), mais soit.
Pour être plus précis, le saut de fin de ligne n'est utilisé que si l'affichage est suivi d'un autre affichage.
Je n'ai pas compris cette phrase à propos de print
. Pour moi, le caractère de fin de ligne est imprimé à chaque fin de ligne, qu'elle soit suivie d'un nouvel affichage ou pas.
De même, pour simuler un dé, on utilisera randrange(6)
Que tu utilises dans l'expression 1 + randrange(6)
. randrange
me semble inadapté à ce cas, on lui préférera un randint(1, 6)
par exemple, qui spécifie bien les bornes et ne nécessite pas de post-calcul.
La syntaxe x += a
est équivalente à x = x + a
Ça me gêne de voir cela présenté comme une vérité générale.
C'est vrai tant que tu manipules des nombres, mais ça ne le serait plus avec des listes, où les deux instructions prennent un sens un peu différent.
Plus loin, tu parles d'éléments de syntaxe (boucles while
et for
) sans les avoir introduites, j'ai trouvé ça un peu étrange, sachant qu'elles n'arrivent dans le cours que bien plus tard.
Au moment des boucles, justement, le pas de la fonction range
mériterait d'être expliqué.
Tu en viens à présenter des codes un peu étranges pour passer outre (lors des comptages de 42 en 42, de 5 en 5).
Par exemple, étant donné une liste L de nombres, si on cherche à déterminer combien L contient d'entiers positifs, on utilisera une boucle d'en-tête du type for i in range(len(L))
.
Je suis en total désaccord avec cette proposition, et avec la majorité des boucles for
que tu utilises pour illustrer ton cours.
L'index i
est bien souvent inutile, il n'est pas nécessaire de le connaître lors des itérations (et même s'il l'était, il y a d'autres manières de faire).
Cette boucle devrait être remplacée par une du type for element in L
, plus simple à lire et plus en accord avec le langage.
Ligne 5 : à chaque tour de boucle, l'appel len(L)
est recalculé alors que len(L)
est un nombre qui ne varie pas.
Certes, l'appel est répété, mais son résultat n'est pas recalculé. Python se charge déjà de stocker la taille pour éviter de la recalculer à chaque appel.
Aussi, la plupart des boucles while
utilisées pourraient être remplacées par un for
et un break
judicieux (qui ne nécessiterait pas de revenir en arrière sur l'index comme dans l'exercice sur les puissances de 1.0001).
JOURS_SEMAINES = ["toto", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"]
"
J'ai trouvé cet exemple bizarre.
Sémantiquement, le tableau est censé contenir les noms des jours de la semaine, ce n'est pas le cas à cause de "toto"
.
Je comprends bien la raison de sa présence, mais ça me semble être une réponse incongrue à un problème assez simple.
Voilà pour ce qui est de la lecture.
Maintenant j'ai d'autres interrogations sur le cours en lui-même et sur la possibilité de l'intégrer à la collection de tutoriels Python.
- Si je comprends bien c'est un cours que tu donnes déjà à l'extérieur, donc hormis quelques problèmes de mise en page, il est dans son état final. Est-ce que tu penses ajouter d'autres parties dédiées à des manipulations plus poussées du langage (traitement de chaînes, structures de données, communication, modules, etc.) ?
- Sinon, est-ce que tu vois un moyen de faire un pont entre ce tutoriel et les autre contenus en rapport avec Python ?
Merci.