Page 1 of 2

QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 15:38
by critor
5409
Quelle Calculatrice programmable Choisir 2019 - Episode 3
Modules Python


Aujourd'hui abordons enfin la programmation Python, et plus particulièrement la richesse de chacune des implémentations.

Afin de prendre connaissance du contenu de chaque module, nous utiliserons de plus le script suivant :
Code: Select all
def sstr(obj):
  try:
    s=obj.__name__
  except:
    s=str(obj)
    a=s.find("'")
    b=s.rfind("'")
    if a>=0 and b!=a:
      s=s[a+1:b]
  return s

def isExplorable(obj):
  s=str(obj)
  return s.startswith("<module '") or s.startswith("<class '")

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      print(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      print(hd+itms)
  if c>0:
    print(hd+"Total: "+str(c)+" item(s)")
  return c


Les Casio Graph 35+E II et Graph 90+E permettent d'accéder par défaut 175 éléments (module builtins).

Elles permettent de plus l'importation de 2 modules complémentaires :
  • math (25 éléments)
  • random (8 éléments)


Par rapport aux programmes scolaires, on regrettera essentiellement 2 choses :
  • l'absence du module dédié aux fonctions complexes cmath (séries S, STI2D, et STL spécialité SPCL du BAC 2020, option Mathématiques Expertes du BAC 2021) :mj:
  • l'absence d'un module graphique (Maths collège avec Scratch, Physique-Chimie Seconde) :mj:


L'astuce TI-Planet :

Hors mode examen, tu peux installer et utiliser l'application CasioPython sur ta Graph 35+E II pour bénéficier de 204 fonctions builtins, ainsi que de pas moins de 7 modules complémentaires : :bj:
  • array (4 éléments)
  • cmath (12 éléments)
  • gc (7 éléments)
  • math (41 éléments)
  • micropython (6 éléments)
  • random (8 éléments)
  • sys (12 éléments)
ImageImageImageImageImageImageImage


Cette application est également utilisable sur les anciens modèles Graph 75+E et même Graph 35+E après installation du système Graph 75+E 2.05 dans ce dernier cas.. :bj:


La TI-83 Premium CE Edition Python et la TI-83 Premium CE munie du module externe TI-Python offrent quant à elles respectivement 190 éléments builtins.

Elles nous gâtent avec 7 modules complémentaires :
  • array (4 éléments)
  • collections (2 éléments)
  • gc (7 éléments)
  • math (mais avec 28 éléments cette fois-ci)
  • random (8 éléments)
  • sys (15 éléments)
  • time (4 éléments)

On regrettera là encore ici l'absence du module cmath ainsi que d'un module graphique. :mj:


L'astuce TI-Planet :

Si tu redescends ta TI-83 Premium CE en version 5.3.5, même en mode examen tu peux bénéficier sur ton module externe TI-Python d'un firmware tiers plus étendu avec
191 fonctions builtins ainsi que 12 modules complémentaires : :bj:
  • array (4 éléments)
  • board (22 éléments)
  • cmath (12 éléments)
  • collections (2 éléments)
  • gc (7 éléments)
  • math (41 éléments)
  • micropython (6 éléments)
  • os (15 éléments)
  • random (8 éléments)
  • storage (21 éléments)
  • sys (15 éléments)
  • time (12 éléments)


La NumWorks quant à elle se contente certes de 188 éléments builtins.

Mais elle nous couvre de 6 modules complémentaires fort pertinents :
  • cmath (12 éléments)
  • kandinsky (5 éléments)
  • math (41 éléments)
  • micropython (6 éléments)
  • random (8 éléments)
  • time (3 éléments)
  • turtle (38 éléments)

On apprécie ici la présence de deux modules graphiques : turtle pour réinvestir les acquis du collège en Scratch tout en adoptant l'écriture Python (Mathématiques Seconde) et kandinsky (Physique-Chimie Seconde). :bj:


La HP Prime est un cas particulier, dans le sens où elle ne dispose pas d'une véritable implémentation Python mais se contente de traduire silencieusement les scripts Python saisis vers son langage interprété historique.

Il n'y a pas de découpage en modules, mais les scripts Python saisis auront accès à 893 éléments.

On apprécie ici les fonctions graphiques pour la Physique-Chimie de Seconde.

On regrette toutefois l'absence de fonctions graphiques relatives (à la turtle / Scratch / Logo).


L'année dernière, il était encore possible de coder en Python sur les TI-Nspire et TI-Nspire CX, grâce à MicroPython et l'éditeur pyWrite ou NoteWriter.

MicroPython offre donc 218 éléments builtins, agrémentés de 7 modules complémentaires :
  • array (4 éléments)
  • cmath (12 éléments)
  • gc (7 éléments)
  • math (41 éléments)
  • micropython (3 éléments)
  • nsp (10 éléments)
  • sys (15 éléments)


On apprécie ici la présence d'un module graphique : nsp. :bj:

On regrette par contre l'absence du module aléatoire random. :(

Et surtout, MicroPython n'est plus installable sur les TI-Nspire CX acquises cette année. MicroPython nécessite en effet Ndless que Texas Instruments a une fois de plus bloqué avec la dernière version système 4.5.1. Et c'est tout autant exclu sur les TI-Nspire CX II. :mj:




Comme tu le vois la NumWorks semble l'emporter pour les fonctionnalités Python offertes, en pertinence par rapport aux programmes scolaires. :bj:

Avant de conclure, une petite page de publicité en l'honneur de ses négatifs, les zéros absolus du jour :



Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 16:40
by parisse
A noter que sur les Casio Graph 35eii et 90, avec KhiCAS, on a une implementation de syntaxe Python plus complete que sur la HP Prime, *avec* les commandes tortue.

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 16:50
by critor
Je sais, merci.

Mais pour cette année, j'ai fait le choix de retenir/recommander au maximum 1 seule appli non officielle par fonctionnalité testée et par modèle.

Pour la programmation Python sur Casio Graph 35/75, c'est donc CasioPython que j'ai retenu.
KhiCAS a lui été retenu pour le calcul formel.

Sur fx-CG10/20, j'aurais pu retenir KhiCAS à la fois pour le Python et le calcul formel, vu que CasioPython n'existe pas pour ces modèles.
Mais les fx-CG10/20 ne font pas partie des modèles évalués cette année.

On verra comment organiser refondre les QCC l'année prochaine, si on veut bien nous clarifier la chose avec des circulaires et banques de sujets d'ici-là.

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 17:47
by parisse
Je comprends que c'est beaucoup de travail, mais limiter KhiCAS au calcul formel me semble tres reducteur. Concernant la programmation en syntaxe Python, KhiCAS est quand meme bien plus complet que CasioPython: programmation graphique, instructions tortue (d'ailleurs utilise l'an dernier pour le concours tiplanet), programmation appliquee aux mathematiques (equivalent partiel de numpy/scipy/matplotlib). Avec en prime debuggueur interactif. En fait c'est l'environnement compatible Python le plus complet du marche, alors ne pas en parler dans le QCC, je ne comprends tout simplement pas. D'autant plus qu'il est plus abouti que sur la Prime.

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 18:36
by critor
J'ai modifié l'article en rajoutant un paragraphe TI-Nspire, avec l'appli Ndless MicroPython.

Les TI-Nspire monochromes arrivent ainsi en 3ème position... et les TI-Nspire CX dernières.

Anomalie que je n'avais pas anticipée et dont le traitement m'a demandé donc un certain temps. Depuis 2015 le classement QCC est effectué pour chaque modèle avec la dernière mise à jour et la dernière révision matérielle.
Or MicroPython nécessite Ndless qui est bloqué cette année en version 4.5.1, ce qui disqualifie donc les TI-Nspire CX... mais pas les TI-Nspire ClickPad/TouchPad qui sont toujours en version 3.9.

Je n'ai pas de raison de faire d'exception pour un seul des constructeurs alors que c'est la règle appliquée à tous depuis 4 ans.

Texas Instruments n'a qu'à arrêter de faire des mises à jour qui dégradent ses produits en bloquant toute initiative communautaire conséquente (Ndless avec tout ce que ça implique dont MicroPython et KhiCAS, firmware TI-Python tiers...); mais ça ça va bientôt faire une décennie qu'on leur dit et répète en vain à de nombreuses occasions. Si si, depuis une décennie malgré l'établissement de contacts avec la communauté on en est visiblement au même point, rien n'a bougé/évolué, toute initiative communautaire conséquente se voit immédiatement bloquée à la prochaine mise à jour. Même si la communauté n'a jamais attaqué le mode examen depuis son annonce en 2015, visiblement il n'y a strictement aucune confiance.

Les 3 constructeurs concurrents sont très loin d'adopter un comportement aussi extrême... Casio n'a pas sorti de mise à jour bloquant CasioPython sur Graph 35/75+E pour booster ses ventes de Graph 35+E II que je sache.

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 19:48
by parisse
critor wrote:J'ai modifié l'article en rajoutant un paragraphe TI-Nspire, avec l'appli Ndless MicroPython.

Une modification analogue mentionnant l'existence de KhiCAS pour les nouvelles Casio serait appreciee. Pour memoire, la compatibilite Python dans Xcas c'est 2 ans de travail (sur 19), le portage specifique a Casio c'est environ 3 mois pour la Graph 90, et 2 mois pour la graph 35eii. Le travail vient juste de commencer sur Numworks (15 jours pour prouver la faisabilite), il y a maintenant probablement plusieurs mois de travail pour realiser un shell equivalent a celui des Casio. Etre ignore dans le QCC pour une limitation uniforme d'une appli tierce par domaine sans tenir compte de la pertinence, c'est extremement decourageant.

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 20:50
by DoOmnimaga
Je ne savais pas que le Python fonctionnait sur HP Prime. :O

Est-ce que ça fonctionne aussi sur le premier hardware G1?

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 27 Aug 2019, 22:29
by critor
Oui, si ta HP Prime G1 est à jour, et que tu es en mode CAS, tu peux coder tes programmes/fonctions en syntaxe Python. :)

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 28 Aug 2019, 19:50
by parisse
critor wrote:Pour la programmation Python sur Casio Graph 35/75, c'est donc CasioPython que j'ai retenu.
KhiCAS a lui été retenu pour le calcul formel.

Sur fx-CG10/20, j'aurais pu retenir KhiCAS à la fois pour le Python et le calcul formel, vu que CasioPython n'existe pas pour ces modèles.
Mais les fx-CG10/20 ne font pas partie des modèles évalués cette année.

Par contre les Graph 90 en font partie, or CasioPython n'existe pas non plus pour ce modele alors que KhiCAS oui.

Re: QCC 2019 épisode 3 : modules Python

Unread postPosted: 29 Aug 2019, 13:01
by critor
Sur les Graph 90+E il y a le Python fourni directement par Casio.

Bon sinon, je viens de tester sur Graph 90+E 3.30 :
viewtopic.php?p=244815#p244815

Strictement aucun ajout, donc rien à modifier dans ce test.