kamelNaroun / python.lycee

tutoriel Python pour l'enseignement de l'algorithmique au lycée
python.lycee.free.fr
2 stars 1 forks source link

Built-in Functions #21

Open kamelNaroun opened 12 years ago

kamelNaroun commented 12 years ago

Rajouter une partie sur les fonctions prédéfinies de Python dans la page Fonctions.

Grahack commented 12 years ago

Bonne idée, à la suite de la page des fonctions. Reste à faire une jolie classification suivant leur signature (types params, types retours, numériques ou non...). Pour avoir une liste (à édulcorer): [name for name in dir(builtin) if ord(name[0]) > 95] Attention aux versions de Python.

Grahack commented 12 years ago

J'ai raté par flemme d'utilisation du marquage. Il faut un double underscore autour de builtin.

kamelNaroun commented 12 years ago

Bien vu la liste en comprehension. Pour que ça marche, il faut encore rajouter un s :

[name for name in dir(builtins) if ord(name[0]) > 95]

Je ne pense pas qu'il faille tout passer en revue. Le lien vers la page officielle, pour satisfaire tout le monde, puis les fonctions les plus importantes pour une utilisation au lycée.

Grahack commented 12 years ago

OK, on est dac. Tu me fais une liste des fctions que tu veux étudier? Ça peut aider pour la classification d'ailleurs. 'builtin' fonctionne aussi si 'import builtin' est fait avant.

--- En date de : Lun 15.8.11, kamelNaroun reply@reply.github.com a écrit :

De: kamelNaroun reply@reply.github.com Objet: Re: [python.lycee] Built-in Functions (#21) À: christophegragnic@yahoo.fr Date: Lundi 15 août 2011, 16h30 Bien vu la liste en comprehension. Pour que ça marche, il faut encore rajouter un s :

[name for name in dir(builtins) if ord(name[0])

95]

Je ne pense pas qu'il faille tout passer en revue. Le lien vers la page officielle, pour satisfaire tout le monde, puis les fonctions les plus importantes pour une utilisation au lycée.

Reply to this email directly or view it on GitHub: https://github.com/kamelNaroun/python.lycee/issues/21#issuecomment-1807498

kamelNaroun commented 12 years ago

Voici ma selection : abs, complex, float, input, int, len, list, min, print, range, raw_input, round, sum, type, zip.

Le but c'est aussi de faire comprendre l'intérêt des modules complémentaires qui permettent l’accès à d'autres fonctions.

Grahack commented 12 years ago

Je n'ai plus la liste totale ss les yeux, tu peux mettre ici ceux que tu as laissé de côté? On en apprend ts les jours: 'int' est de type 'type' mais est callable. Je mettrais bien 'str' aussi, voire d'autres, mais ça peut devenir difficile, tant à organiser qu'à lire. 'zip' est pour moi "deuxième lecture". Attention à 'input' qui existe dans les deux versions.

Bonne idée pour les modules. Il faudra distinguer ceux qui sont inclus dans l'install de base (qui peut varier selon les versions, distributions...) de ceux que l'on peut ajouter, voire parler des modules qu'on peut faire soi-même.

--- En date de : Mer 17.8.11, kamelNaroun reply@reply.github.com a écrit :

De: kamelNaroun reply@reply.github.com Objet: Re: [python.lycee] Built-in Functions (#21) À: christophegragnic@yahoo.fr Date: Mercredi 17 août 2011, 18h34 Voici ma selection : abs, complex, float, input, int, len, list, min, print, range, raw_input, round, sum, type, zip.

Le but c'est aussi de faire comprendre l'intérêt des modules complémentaires qui permettent l’accès à d'autres fonctions.

Reply to this email directly or view it on GitHub: https://github.com/kamelNaroun/python.lycee/issues/21#issuecomment-1827992

kamelNaroun commented 12 years ago

Ce que signfie être du type "type" est un peu mystérieux pour moi. Mais j'ai vu que float et type en étaient aussi.

Je ne connais pas du tout les variations de modules inclus dans l'install de base selon les versions mais j'espère que cela ne concerne pas les modules que l'on pourrait conseiller à nos élèves.

Je m’aperçois que j'avais oublié la fonction max dans ma selection.

Pour zip dont j'ai appris l'existence hier seulement, je l'ai mis dans ma selection parce que j'avais en tête une idée d'utilisation : à partir d'une liste d'abscisses et d'une liste d'ordonnées, cela permet d'avoir une liste de coordonnées de points. Mais effectivement, on peut le mettre en deuxième lecture pour les élèves.

Voici les fonctions que j'ai laissées de côté : all, any, apply, basestring, bin, bool, buffer, bytearray, bytes, callable, chr, classmethod, cmp, coerce, compile, copyright, credits, delattr, dict, dir, divmod, enumerate, eval, execfile, exit, file, filter, format, frozenset, getattr, globals, hasattr, hash, help, hex, id, intern, isinstance, issubclass, iter, license, locals, long, map, memoryview, next, object, oct, open, ord, pow, property, quit, reduce, reload, repr, reversed, set, setattr, slice, sorted, staticmethod, str, super, tuple, unichr, unicode, vars, xrange.

Grahack commented 12 years ago

1) 'type' est le type des types. C'est en quelque sorte un surtype, mais qui reste son propre type.

2) j'ai marqué * les fonctions qui pouvaient être implémentées en Python. Ça peut être un exo intéressant pour nos lecteurs. On ne propose pas de soluce, mais ça peut alimenter le blog si on commence à avoir des commentaires (lecteurs actifs).

3) mes commentaires sur tes choix: help, il faut la garder, elle souligne la puissance de l'interp interactif. D'ailleurs pour examiner les fctions que je ne connaissais pas, je m'en suis bcp servi. Problème: type(type) est plus facile à comprendre que help(help)!

all, any, connaissais pas, marrant mais ok pour les virer.

bin, hex, **oct***, c'est dans aucun programme au lycée? STI peut-être?

bool, type subtil, peut améliorer la lisibilité des tests, faut voir si je peux rédiger un paragraphe supplémentaire dans la partie 'booléens'.

pow_, je préfère cette écriture à _*, j'aimerais la garder. Notons que le deuxième arg peut ne pas être entier (mais reimplémentable en Python seulement si entier, quoique!!!).

str, encore un type, donc subtil, mais peut servir aussi bien que int, par exemple pour le travail sur les bases de numération.

chr, ord, utile pour le code de César par exemple, mais réimplémentable pour les caractères de l'alphabet.

**enumerate***, en deuxième lecture seulement, mais peut être très pratique

exit, à garder, utile pour les jeux par ex, et très simple.

reversed, sorted, très utile pour éviter le point. On finira par parler de ce point, même pour botter en touche. Note que dans la section bases/liste on parle de liste.sort().

set, intéressant pour les matheux que nous sommes (deuxième lect), à comparer avec les listes.

Le reste (apply, basestring, buffer, bytearray, bytes, callable, classmethod, cmp, coerce, compile, copyright, credits, delattr, dict, dir, divmod, eval, execfile, file, filter, format, frozenset, getattr, globals, hasattr, hash, id, intern, isinstance, issubclass, iter, license, locals, long, map, memoryview, next, object, open, property, quit, reduce, reload, repr, setattr, slice, staticmethod, super, tuple, unichr, unicode, vars, xrange) ok pour virer jusqu'à nouvel ordre!

4) On pourrait donner la liste des écartées en précisant qu'on l'a fait délibérément (proposer d'utiliser help(la_fonction)), ce qui me refait penser à une page à laquelle je pense pour le tuto, avec la liste des sujets qu'on a décidé de ne pas aborder, comme dict par ex (ichou à rédiger).

--- En date de : Jeu 18.8.11, kamelNaroun reply@reply.github.com a écrit :

De: kamelNaroun reply@reply.github.com Objet: Re: [python.lycee] Built-in Functions (#21) À: christophegragnic@yahoo.fr Date: Jeudi 18 août 2011, 10h56 Ce que signfie être du type "type" est un peu mystérieux pour moi. Mais j'ai vu que float et type en étaient aussi.

Je ne connais pas du tout les variations de modules inclus dans l'install de base selon les versions mais j'espère que cela ne concerne pas les modules que l'on pourrait conseiller à nos élèves.

Je m’aperçois que j'avais oublié la fonction max dans ma selection.

Pour zip dont j'ai appris l'existence hier seulement, je l'ai mis dans ma selection parce que j'avais en tête une idée d'utilisation : à partir d'une liste d'abscisses et d'une liste d'ordonnées, cela permet d'avoir une liste de coordonnées de points. Mais effectivement, on peut le mettre en deuxième lecture pour les élèves.

Voici les fonctions que j'ai laissées de côté : all, any, apply, basestring, bin, bool, buffer, bytearray, bytes, callable, chr, classmethod, cmp, coerce, compile, copyright, credits, delattr, dict, dir, divmod, enumerate, eval, execfile, exit, file, filter, format, frozenset, getattr, globals, hasattr, hash, help, hex, id, intern, isinstance, issubclass, iter, license, locals, long, map, memoryview, next, object, oct, open, ord, pow, property, quit, reduce, reload, repr, reversed, set, setattr, slice, sorted, staticmethod, str, super, tuple, unichr, unicode, vars, xrange.

Reply to this email directly or view it on GitHub: https://github.com/kamelNaroun/python.lycee/issues/21#issuecomment-1837447

kamelNaroun commented 12 years ago

Je commence par la fin. Je trouve que ton idée de créer une page énonçant la liste des sujets qu'on a décidé de ne pas aborder dans le tuto est bonne.

bin, hex et oct dans un programme de maths de lycée ? Jamais vu. Mais peut-être dans la nouvelle spécialité de S.

Ok pour help. C'est vrai que ça peut servir. Je n'ai pas trop ce réflexe mais tu as raison.

Je préfère \ à pow. Je trouve cela plus proche de ce que les élèves ont l'habitude d'utiliser. Il y a déjà tellement à apprendre.

Pour str, je ne sais pas trop. Je trouve que int peut plus servir par exemple pour transformer en entier le résultat d'un raw_input ou input (en P3).

chr et ord : bof. A part pour des histoires à la mode de César, je ne vois pas dans quelle autre situation cela pourrait servir. Et même là, comme tu le dis, on peut l'implémenter et c'est le seul intérêt même. Ceci étant, il est vrai que ce sont des fonctions faciles à comprendre. Bon finalement, je ne sais pas.

Je ne connaissais pas enumerate. En cherchant sur google, j'ai vu que c'était une fonction pythonique. Les dieux Python nous en voudront peut-être si on ne la met pas.

exit : éventuellement, sans enthousiasme.

reversed et sorted : oui, il faut absolument en parler. En fait dans le tuto, j'avais utilisé liste.sort() tout simplement parce que je ne connaissais pas la fonction sorted. C'est drôle.

set : oui, d'accord, c'est bien d'en parler.

Bonne idée d'exercice, l'implémentation des fonctions.

Grahack commented 12 years ago

Ichou des notions mises de côté créée.

Pas trouvé grand chose sur les bases, on peut virer bin hex et oct.

Pour pow et **, on peut la mettre pour laisser le choix à nos lecteurs.

Oui, int va plus servir que str. Je pense qu'on peut mettre une partie sur les types qque part, et même pas forcément en deuxième lecture. Sinon ça me gène de ne pas en parler. Du coup si on fait ça on peut mettre un lien depuis ces builtins vers cette nouvelle partie. Un truc assez bref promis. Je vais réfléchir et je te proposerai qque chose plus tard. Ichou créée.

Ce qui peut nous décider pour ord et chr , c'est que ces noms sont difficiles à retenir. On pourrait rajouter un paragraphe dans manipulation de listes et de chaînes. Ichou créée.

Pour enumerate (en fait pour le reste aussi) Python est athée (mais zen http://www.python.org/dev/peps/pep-0020/) et tu peux utiliser cette page plutôt que google pour ces fonctions: http://docs.python.org/library/functions.html. Oui, il faut la mettre illustrée par un exemple de code avec et sans.

_exit ne va faire peur à personne.

Le problème avec reversed et sorted , c'est qu'ils donnent une copie de la liste et qu'on sera svt obligés de taper

liste = sorted(liste)

(moche) à la place de

liste.sort()

(beau). Mais bon, si tu me donne un bel exemple, tu peux me convaincre...

set est très sympa, mais 1) je ne m'en suis jamais servi dans ma vie de développeur et 2) je ne vois pas d'activité qui l'utilise pour les élèves. Faut voir aussi qu'on ne l'utilise quasiment qu'avec la notation avec le point.

Bien, on est à peu près d'accord qd même !!! Reste à rédiger !!!