Page 1 of 1

Graph 90/35+E II 3.30/3.40: exploration turtle + matplotlib

Unread postPosted: 14 Apr 2020, 20:49
by critor
La semaine dernière, Casio te sortait ses superbes mises à jour 3.30 et 3.40 pour ta Graph 35+E II ou Graph 90+E. Au menu des possibilités Python largement étendues avec :
  • un module casioplot permettant de contrôler les pixels de l'écran
  • un script matplotl.py interfaçant le module casioplot afin de le rendre utilisable comme le module matplotlib.pyplot standard
  • un script turtle.py interfaçant le module casioplot afin de le rentre utilisable comme le module turtle standard
Tes scripts faisant usage de ces deux derniers ont de plus le gros avantage de pouvoir être très facilement compatibles :
  • avec les plateformes implémentant les modules turtle et matplotlib.pyplot standard (ordinateur, tablette, ...) :bj:
  • aussi bien avec les Graph 90+E que les Graph 35+E II malgré leurs écrans très différents :bj:
  • et même compatibles NumWorks, non non tu ne rêves pas ! :bj:

Nous avions exploré le module casioplot et reclassé les solutions Python sur calculatrice en conséquence.

Toutefois nous n'avions pas fait de même pour les interfaces matplotl.py et turtle.py, nous contentant pour leur part de tests de compatibilité, aux résultats certes excellents.

En effet, les interfaces matplotl.py et turtle.py ont le défaut de disparaître en mode examen, et bien qu'officielles il n'aurait donc pas été juste de les inclure dans un même classement. :'(

Aujourd'hui après avoir pris le temps de réfléchir à comment traiter tout ceci de façon équitable, nous te proposons enfin nos exploration et classement, à l'aide du scrit suivant.

Code: Select all
def getplatform():
  id=-1
  try:
    import sys
    try:
      if sys.platform=='nspire':id=0
      if sys.platform.startswith('TI-Python') or sys.platform=='Atmel SAMD21':id=4
    except:id=3
  except:
    try:
      import kandinsky
      id=1
    except:
      try:
        if chr(256)==chr(0):id=5+(not ("HP" in version()))
      except:
        id=2
  return id

platform=getplatform()
#lines shown on screen
#plines=[29,12,  7, 9,11,0,0]
plines=[29,16,  7, 9,11,0,0]
#max chars per line
#(error or CR if exceeded)
pcols =[53,99,509,32,32,0,0]

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*ls):
  global curline
  st=""
  for s in ls:
    if not(isinstance(s,str)):
      s=str(s)
    st=st+s
  stlines=1+int(len(st)/ncols)
  if curline+stlines>=nlines:
    input("Input to continue:")
    curline=0
  print(st)
  curline+=stlines

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("<") and s.find(" ")>=0 and not s.startswith("<module")

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


Commençons donc par l'interface matplotl.py, avec l'appel import matplotl; explmod(matplotl).

Tu bénéficies donc ici de 25 points d'entrée :


12459On peut déjà noter quelques différences de valeurs entre les versions du script pour Graph 35+E II et Graph 90+E, l'un travaillant en effet sur un écran 128×64 pixels et l'autre 384×192 pixels.

Il faut donc éviter intervertir les deux versions du script.

Pas d'erreur sinon, tes scripts seront fonctionnels mais tu obtiendras un affichage non conforme à ton écran; en timbre poste dans le coin supérieur gauche sur Graph 90+E, ou encore illisible car débordant de l'écran sans possibilité de défilement sur Graph 35+E II.




Et maintenant voici l'exploiration de l'interface turtle.py, avec l'appel import turtle; explmod(turtle).

Bien que nettement plus court, le script offre ici dans ses deux versions pas moins de 69 points d'entrée :









Synthétisons donc enfin ces dernières nouveautés :
Casio Graph
35+E II
90+E
NumWorks
TI-83PCE
Ed. Python
builtins
array
collections
cmath
gc
math
matplotlib
matplotlib.pyplot
micropython
os
random
sys
time
turtle
uerrno
84-175
.
.
.
.
25
.
.
.
.
8
.
.
.
.
97-440
3-13
.
13-17
9-13
42-46
.
.
10-14
.
.
17-63
.
.
25-29
88-188
.
.
12
.
41
3
11
6
.
9
.
3
38
.
92-189
2-4
2
.
7
28
.
.
.
.
8
15-42
4
.
.
spécifiquecasioplot:6prime:3-7ion:48
kandinsky:6
ti_graphics:?
ti_hub:?
ti_plotlib:?
ti_system:12
ti_rover:?
Modules491113
Eléments123-214219-642265-365170-296
Casio Graph
35+E II
90+E
CasioPython
Casio Graph
35+E II
35+E/USB
75/85/95
MicroPython
TI-Nspire
TI-Python
builtins
array
collections
cmath
gc
math
matplotlib
matplotlib.pyplot
micropython
os
random
sys
time
turtle
uerrno
84-175
.
.
.
.
25
.
.
.
.
8
.
.
69
.
91-204
2-4
.
12
7
41
.
.
6
.
8
12
.
.
24
93-218
2-4
.
12
7
41
.
.
3
.
.
15-45
.
.
.
92-189
2-4
2
.
7
28
.
.
.
.
8
15-42
4
.
.
93-191
2-4
2
12
7
41
.
.
6
15
8
15-45
8-10
.
.
spécifiquecasioplot:6
matplotl:25
nsp:3-10board:22
storage:7-21
Modules698913
Eléments217-308203-318176-340158-284238-384


Et voici donc le classement à jour des Pythonnettes dans les deux catégories, en terme d'éventail puis de richesse des modules :
Aux examens français :
  1. 13 modules :
    TI-83 Premium CE Edition Python
  2. 11 modules :
    NumWorks
  3. 9 modules :
    HP Prime (version alpha)
  4. 4 modules :
    Casio Graph 35+E II
    Casio Graph 90+E
En classe :
  1. 13 modules :
    TI-Python (firmware tiers)
    TI-83 Premium CE Edition Python
  2. 11 modules :
    NumWorks
  3. 9 modules :
    HP Prime (version alpha)
    Casio Graph 35+E II
    Casio Graph 35+E/USB
    Casio Graph 75/85/95
    Casio fx-9750GII/GIII
    Casio fx-9860G/GII/GIII

    (appli CasioPython)
  4. 8 modules :
    TI-Nspire (appli MicroPython)
    TI-Python
  5. 6 modules :
    Casio Graph 35+E II
    Casio Graph 90+E
    Casio fx-9750/9860GIII
    Casio fx-CG50

Aux examens français :
  1. 219-642 éléments :
    HP Prime (version alpha)
  2. 265-365 éléments :
    NumWorks
  3. 170-296 éléments :
    TI-83 Premium CE Edition Python
  4. 123-214 éléments :
    Casio Graph 35+E II
    Casio Graph 90+E
En classe :
  1. 219-642 éléments :
    HP Prime (version alpha)
  2. 265-365 éléments :
    NumWorks
  3. 238-384 éléments :
    TI-Python (firmware tiers)
  4. 217-308 éléments :
    Casio Graph 35+E II
    Casio Graph 90+E
    Casio fx-9750/9860GIII
    Casio fx-CG50
  5. 203-318 éléments :
    Casio Graph 35+E II
    Casio Graph 35+E/USB
    Casio Graph 75/85/95
    Casio fx-9750GII/GIII
    Casio fx-9860G/GII/GIII

    (appli CasioPython)
  6. 176-340 éléments :
    TI-Nspire (appli MicroPython)
  7. 170-296 éléments :
    TI-83 Premium CE Edition Python
  8. 158-284 éléments :
    TI-Python



Liens :

Téléchargements :