Graph 90/35+E II 3.30/3.40: exploration turtle + matplotlib
Posted: 14 Apr 2020, 20:49
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
- avec les plateformes implémentant les modules turtle et matplotlib.pyplot standard (ordinateur, tablette, ...)
- aussi bien avec les Graph 90+E que les Graph 35+E II malgré leurs écrans très différents
- et même compatibles NumWorks, non non tu ne rêves pas !
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.
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 :
On 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.
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écifique | casioplot:6 | prime:3-7 | ion:48 kandinsky:6 | ti_graphics:? ti_hub:? ti_plotlib:? ti_system:12 ti_rover:? |
Modules | 4 | 9 | 11 | 13 |
Eléments | 123-214 | 219-642 | 265-365 | 170-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écifique | casioplot:6 matplotl:25 | nsp:3-10 | board:22 storage:7-21 | ||
Modules | 6 | 9 | 8 | 9 | 13 |
Eléments | 217-308 | 203-318 | 176-340 | 158-284 | 238-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 :
- 13 modules :
TI-83 Premium CE Edition Python - 11 modules :
NumWorks - 9 modules :
HP Prime (version alpha) - 4 modules :
Casio Graph 35+E II
Casio Graph 90+E
En classe :
- 13 modules :
TI-Python (firmware tiers)
TI-83 Premium CE Edition Python - 11 modules :
NumWorks - 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) - 8 modules :
TI-Nspire (appli MicroPython)
TI-Python - 6 modules :
Casio Graph 35+E II
Casio Graph 90+E
Casio fx-9750/9860GIII
Casio fx-CG50
Aux examens français :
- 219-642 éléments :
HP Prime (version alpha) - 265-365 éléments :
NumWorks - 170-296 éléments :
TI-83 Premium CE Edition Python - 123-214 éléments :
Casio Graph 35+E II
Casio Graph 90+E
En classe :
- 219-642 éléments :
HP Prime (version alpha) - 265-365 éléments :
NumWorks - 238-384 éléments :
TI-Python (firmware tiers) - 217-308 éléments :
Casio Graph 35+E II
Casio Graph 90+E
Casio fx-9750/9860GIII
Casio fx-CG50 - 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) - 176-340 éléments :
TI-Nspire (appli MicroPython) - 170-296 éléments :
TI-83 Premium CE Edition Python - 158-284 éléments :
TI-Python
Liens :
- tuto-vidéo de mise à jour (Graph 35+E II et Graph 90+E)
- tuto illustré de mise à jour (Graph 35+E II, Graph 90+E et leurs clés USB d'émulation)
Téléchargements :
- Mise à jour 3.30 de la Graph 35+E II (pour Windows)
- Mise à jour 3.40 des Graph 90+E / fx-CG50 (pour Windows)
- interface turtle.py pour Graph 35+E II / Graph 90+E / fx-CG50
- interface matplotl.py pour Graph 35+E II / Graph 90+E / fx-CG50