π
<-
Chat plein-écran
[^]

Module TI-Python: découverte fonctions builtins cachées !

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

Module TI-Python: découverte fonctions builtins cachées !

Message non lude critor » 20 Nov 2018, 19:40

Cet article au sujet du module TI-Python est rédigé a posteriori et illustré à l’aide des photos de tests prises sur le stand de Texas Instruments aux journées APMEP 2018 puis congrès UdPPC 2018. Nous ne disposons pas à ce jour du module.

Certaines photos ne correspondront pas exactement à ce qui est décrit, car nous avons amélioré le script utilisé entre les deux événements. Or malheureusement, il était beaucoup plus compliqué de prendre de bonnes photos au congrès UdPPC de par l'affluence nettement supérieure, le fait que seulement un module au lieu de deux était disponibles sur le stand pour tous ces visiteurs, ainsi que le fait que les stands ne disposaient cette fois-ci pas de cloisons à la différence mais consistaient en de simples tables alignées le long d'une allée et bien remplies - pas vraiment d'espace pour se poser.

Dans tous les cas, notez que ces tests ont été réalisés sur un prototype non final, et que des choses évoquées peuvent changer d'ici la livraison, en bien ou en mal d’ailleurs.

En vous priant donc de bien vouloir excuser les imprécisions éventuelles.


Dans un article précédent nous t'avons présenté le TI-Python, module externe permettant l'exécution de scripts Python sur ta TI-83 Premium CE.

Et peut-être as-tu été déçu(e) que le catalogue alphabétique accessible via
2nde
0
ne contienne apparemment que 95 éléments, surtout que parmi ces éléments sont inclus ceux des deux modules intégrés math et random. A priori très décevant par rapport à la concurrence...
991399359936993999389940994499379945


Et bien non, en fait chez Texas Instruments le catalogue est très loin de tout lister. Par exemple, la commande try: fonctionne alors qu'elle n'est pas au catalogue.

Comment donc faire pour savoir ce que vaut vraiment le module TI-Python ?

Tentons d'explorer le module builtins à l'aide du script suivant :
Code: Tout sélectionner
#platforms: (0)TI-Nspire (1)NumWorks (2)Graph 90+E (3)Graph 75+E (4)TI-Python
plines=[29,12,  7, 9,11]
pcols =[53,99,509,32,32]
try:
  import sys
  try:
    if sys.platform=='nspire': platform=0
    if sys.platform=='TI-Python Adapter': platform=4
  except: platform=3
except:
  try:
    import kandinsky
    platform=1
  except:
    platform=2

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 explmod(obj,hd="",obs="",reset=True):
  global curline
  if(reset): curline=0
  c=0
  for itm in sorted(dir(obj)):
    c=c+1
    try:
      if obs=="":
        try:
          obs=obj.__name__ 
        except:
          obs=str(obj)
          obs=obs[obs.find("'")+1:obs.rfind("'")]
      its=obs+"."+str(itm)
      itv=eval(its)
      mprint(hd+str(itm)+"="+str(itv))
      if itv!=obj:
        c=c+explmod(itv,hd+".",its,False)
    except:
      mprint(hd+str(itm))
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c


Le script nous liste alors pas moins de 212 entrées retranscrites ci-dessous : :bj:
TI-Python a écrit:9980>>> from explmod import *
>>> import builtins
>>> explmod(builtins)
ArithmeticError=<class 'ArithmeticError'>
AssertionError=<class 'AssertionError'>
AttributeError=<class 'AttributeError'>
BaseException=<class 'BaseException'>
.__init__=<function>
.Total: 1 item(s)
EOFError=<class 'EOFError'>
Ellipsis=Ellipsis
Exception=<class 'Exception'>
GeneratorExit=<class 'GeneratorExit'>
9983ImportError=<class 'ImportError'>
IndentationError=<class 'IndentationError'>
IndexError=<class 'IndexError'>
KeyError=<class 'KeyError'>
KeyboardInterrupt=<class 'KeyboardInterrupt'>
LookupError=<class 'LookupError'>
MemoryError=<class 'MemoryError'>
NameError=<class 'NameError'>
NotImplementedError=<class 'NotImplementedError'>
OSError=<class 'OSError'>
9985OverflowError=<class 'OverflowError'>
ReloadException=<class 'ReloadException'>
RuntimeError=<class 'RuntimeError'>
StopIteration=<class 'StopIteration'>
SyntaxError=<class 'SyntaxError'>
SystemExit=<class 'SystemExit'>
TypeError=<class 'TypeError'>
9982UnicodeError=<class 'UnicodeError'>
ValueError=<class 'ValueError'>
ZeroDivisionError=<class 'ZeroDivisionError'>
__build_class__=<function>
__import__=<function>
__name__=builtins
.count=<bound_method>
.endswith=<bound_method>
.find=<bound_method>
9998.format=<bound_method>
.index=<bound_method>
.isalpha=<bound_method>
.isdigit=<bound_method>
.islower=<bound_method>
.isspace=<bound_method>
.isupper=<bound_method>
.join=<bound_method>
.lower=<bound_method>
.lstrip=<bound_method>
9999.replace=<bound_method>
.rfind=<bound_method>
.rindex=<bound_method>
.rsplit=<bound_method>
.rstrip=<bound_method>
.split=<bound_method>
.startswith=<bound_method>
.strip=<bound_method>
.upper=<bound_method>
.Total: 22 item(s)
10000__repl_print__=<function>
abs=<function>
all=<function>
any=<function>
bin=<function>
bool=<class 'bool'>
bytearray=<class 'bytearray'>
.append=<function>
.extend=<function>
.Total: 2 item(s)
9964bytes=<class 'bytes'>
.count=<function>
.endswith=<function>
.find=<function>
.format=<function>
.index=<function>
.isalpha=<function>
.isdigit=<function>
.islower=<function>
.isspace=<function>
9976.isupper=<function>
.join=<function>
.lower=<function>
.lstrip=<function>
.replace=<function>
.rfind=<function>
.rindex=<function>
.rsplit=<function>
.rstrip=<function>
.split=<function>
.startswith=<function>
9969.strip=<function>
.upper=<function>
.Total: 22 item(s)
callable=<function>
classmethod=<class 'classmethod'>
dict=<class 'dict'>
.__delitem__=<function>
.__getitem__=<function>
9970.__setitem__=<function>
.clear=<function>
.copy=<function>
.fromkeys=<bound_method>
.get=<function>
.item=<function>
.keys=<function>
.pop=<function>
.popitem=<function>
.setdefault=<function>
9988.update=<function>
.values=<function>
.Total: 14 item(s)
dir=<function>
divmod=<function>
enumerate=<class 'enumerate'>
eval=<function>
exec=<function>
filter=<class 'filter'>
float=<class 'float'>
9994getattr=<function>
globals=<function>
hasattr=<function>
hash=<function>
help=<function>
help=<function>
hex=<function>
id=<function>
input=<function>
input=<function>
9990int=<class 'int'>
.from_bytes=<bound_method>
.to_bytes=<function>
.Total: 2 item(s)
isinstance=<function>
issubclass=<function>
iter=<function>
len=<function>
list=<class 'list'>
.append=<function>
9973.clear=<function>
.copy=<function>
.count=<function>
.extend=<function>
.index=<function>
.insert=<function>
.pop=<function>
.remove=<function>
.reverse=<function>
.sort=<function>
.Total: 11 item(s)
9992locals=<function>
max=<function>
memoryview=<class 'memoryview'>
min=<function>
next=<function>
object=<class 'object'>
oct=<function>
open=<function>
10005ord=<function>
pow=<function>
print=<function>
property=<class 'property'>
.__deleter__=<function>
.__getter__=<function>
.__setter__=<function>
.Total: 3 item(s)
range=<class 'range'>
repr=<function>
9978round=<function>
set=<class 'set'>
.__contains__=<function>
.__add__=<function>
.__clear__=<function>
.__copy__=<function>
.__difference__=<function>
.__difference_update__=<function>
.__discard__=<function>
.__intersection__=<function>
9995.__intersection_update__=<function>
.__isdisjoint__=<function>
.__issubset__=<function>
.__issuperset__=<function>
.__pop__=<function>
.__remove__=<function>
.__symetric_difference__=<function>
.__symetric_difference_update__=<function>
.__union__=<function>
.__update__=<function>
.Total: 18 item(s)
9993setattr=<function>
slice=<class 'slice'>
sorted=<function>
staticmethod=<class 'staticmethod'>
str=<class 'str'>
.count=<function>
.endswith=<function>
.find=<function>
.format=<function>
9997.index=<function>
.isalpha=<function>
.isdigit=<function>
.islower=<function>
.isspace=<function>
.isupper=<function>
.join=<function>
.lower=<function>
.lstrip=<function>
.replace=<function>
9979.rfind=<function>
.rindex=<function>
.rsplit=<function>
.rstrip=<function>
.split=<function>
.startswith=<function>
.strip=<function>
.upper=<function>
.Total: 22 item(s)
sum=<function>
10003super=<class 'super'>
tuple=<class 'tuple'>
.count=<function>
.index=<function>
.Total: 2 item(s)
type=<class 'type'>
zip=<class 'zip'>
Total: 212 item(s)
212
>>>


Tout ça c'est bien joli, mais qu'est-ce que ça donne par rapport à la concurrence ?
Et bien voilà, nous avons lancé le même script sur les autres calculatrices disposant du Python à ce jour :
Casio
Graph 90+E
NumWorks
TI-Python
pour
TI-83 Premium CE
ArithmeticError
AssertionError
AttributeError
BaseException
EOFError
Ellipsis
Exception
GeneratorExit
ImportError
IndentationError
IndexError
KeyError
KeyboardInterrupt
LookupError
MemoryError
NameError
NotImplemented

OSError
OverflowError

RuntimeError
StopIteration
SyntaxError
SystemExit
TypeError
UnicodeError
ValueError
ViperTypeError
ZeroDivisionError
__build_class__()
__import__()

__repl_print__()
abs()
all()
any()
bin()
bool
bytearray
bytes
callable()
chr()
classmethod
compile()
complex
dict
dir()
divmod()
enumerate
eval()
exec()
filter
float
frozenset
getattr()
globals()
hasattr()
hash()

hex()
id()
input()
int
isinstance()
issubclass()
iter()
len()
list
locals()
map
max()
memoryview
min()
next()
object
oct()
open()
ord()
pow()
print()
property
range
repr()
reversed
round()
set
setattr()

sorted()
staticmethod
str
sum()
super
tuple
type
zip
ArithmeticError
AssertionError
AttributeError
BaseException
EOFError
Ellipsis
Exception
GeneratorExit
ImportError
IndentationError
IndexError
KeyError
KeyboardInterrupt
LookupError
MemoryError
NameError

NotImplementedError
OSError
OverflowError

RuntimeError
StopIteration
SyntaxError
SystemExit
TypeError

ValueError

ZeroDivisionError
__build_class__()
__import__()
__name__='builtins'
__repl_print__()
abs()
all()
any()
bin()
bool

bytes
callable()
chr()
classmethod

complex
dict
dir()
divmod()

eval()
exec()

float

getattr()
globals()
hasattr()
hash()

hex()
id()
input()
int
isinstance()
issubclass()
iter()
len()
list
locals()
map
max()

min()
next()
object
oct()
open()
ord()
pow()
print()

range
repr()

round()
set
setattr()
slice
sorted()
staticmethod
str
sum()
super
tuple
type
zip
ArithmeticError
AssertionError
AttributeError
BaseException
EOFError
Ellipsis
Exception
GeneratorExit
ImportError
IndentationError
IndexError
KeyError
KeyboardInterrupt
LookupError
MemoryError
NameError

NotImplementedError
OSError
OverflowError

RuntimeError
StopIteration
SyntaxError
SystemExit
TypeError

ValueError

ZeroDivisionError
__build_class__()
__import__()
__name__='builtins'
__repl_print__()
abs()
all()
any()
bin()
bool
bytearray
bytes
callable()
chr()
classmethod

complex
dict
dir()
divmod()
enumerate
eval()
exec()
filter
float
frozenset
getattr()
globals()
hasattr()
hash()

hex()
id()
input()
int
isinstance()
issubclass()
iter()
len()
list
locals()
map
max()
memoryview
min()
next()
object
oct()
open()
ord()
pow()
print()
property
range
repr()
reversed
round()
set
setattr()
slice
sorted()
staticmethod
str
sum()
super
tuple
type
zip
ArithmeticError
AssertionError
AttributeError
BaseException
EOFError
Ellipsis
Exception
GeneratorExit
ImportError
IndentationError
IndexError
KeyError
KeyboardInterrupt
LookupError
MemoryError
NameError

NotImplementedError
OSError
OverflowError

RuntimeError
StopIteration
SyntaxError
SystemExit
TypeError

ValueError

ZeroDivisionError
__build_class__()
__import__()
__name__='builtins'
__repl_print__()
abs()
all()
any()
bin()
bool

bytes
callable()
chr()
classmethod

complex
dict
dir()
divmod()
enumerate
eval()
exec()
filter
float
frozenset
getattr()
globals()
hasattr()
hash()

hex()
id()
input()
int
isinstance()
issubclass()
iter()
len()
list
locals()
map
max()

min()
next()
object
oct()
open()
ord()
pow()
print()

range
repr()
reversed
round()
set
setattr()
slice
sorted()
staticmethod
str
sum()
super
tuple
type
zip
ArithmeticError
AssertionError
AttributeError
BaseException
EOFError
Ellipsis
Exception
GeneratorExit
ImportError
IndentationError
IndexError
KeyError
KeyboardInterrupt
LookupError
MemoryError
NameError

NotImplementedError
OSError
OverflowError
ReloadException
RuntimeError
StopIteration
SyntaxError
SystemExit
TypeError
UnicodeError
ValueError

ZeroDivisionError
__build_class__()
__import__()
__name__='builtins'
__repl_print__()
abs()
all()

bin()
bool
bytearray
bytes
callable()
chr()
classmethod


dict
dir()
divmod()
enumerate
eval()
exec()
filter
float

getattr()
globals()
hasattr()
hash()
help()
hex()
id()
input()
int
isinstance()
issubclass()
iter()
len()
list
locals()
map
max()
memoryview
min()
next()
object
oct()
open()
ord()
pow()
print()
property
range
repr()

round()
set
setattr()
slice
sorted()
staticmethod
str
sum()
super
tuple
type
zip
Total: 218Total: 197Total: 218Total: 210Total: 212


D'où le classement suivant :
  1. TI-Nspire et Casio Graph 35+E/75+E avec 218 entrées
  2. module TI-Python pour TI-83 Premium CE avec 212 entrées
  3. NumWorks avec 210 entrées
  4. Casio Graph 90+E avec 197 entrées

Avec pas moins de 212 éléments présents à ce jour dans son module builtins, l'implémentation Python du module externe TI-Python n'est certes pas la plus complète. Toutefois elle se classe quand même honorablement parmi les plus complètes à la 2nde place, deux cheveux devant la NumWorks, et laisse la Graph 90+E loin derrière ! :bj:

Mais quel dommage que ce module externe TI-Python apparemment aussi complet ne soit pas utilisable aux examens en France !... :'(
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41468
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Module TI-Python: découverte fonctions builtins cachées

Message non lude parisse » 21 Nov 2018, 15:57

C'est peut-etre plutot une bonne nouvelle, car TI ne va pas se precipiter pour faire appliquer le mode examen, pour le moment en tout cas!
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3500
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Module TI-Python: découverte fonctions builtins cachées

Message non lude critor » 21 Nov 2018, 16:03

Concernant le module TI-Python, le problème n'est pas le mode examen. Cela a été testé sur le stand, le module reste utilisable en mode examen, à part que les scripts préchargés sont effacés définitivement.

Le problème, c'est que les examens français n'autorisent par candidat qu'une seule calculatrice à alimentation autonome et sans module externe.
Donc ceux qui ne sauront traduire leurs algorithmes qu'en Python au BAC 2019 parce qu'ils n'auront pas appris un autre langage (à part le Scratch), seront dans l'incapacité de les exécuter pour vérification de leurs réponses.


Le mode examen reste par contre un problème au BAC 2019/2020 (rayer la mention inutile) pour les candidats équipés de Casio Graph 35/75+E ou TI-Nspire. L'implémentation Python disponible sur ces machines n'étant pas passée par la case constructeur, elle sera inaccessible en mode examen. :mj:
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41468
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Module TI-Python: découverte fonctions builtins cachées

Message non lude parisse » 21 Nov 2018, 18:31

en effet, ca n'a rien a voir avec le mode examen, je fatigue :-)
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3500
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Module TI-Python: découverte fonctions builtins cachées

Message non lude critor » 21 Nov 2018, 18:38

Pas grave. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41468
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Module TI-Python: découverte fonctions builtins cachées

Message non lude critor » 22 Déc 2018, 00:16

La nouvelle version 1.5 bêta de CasioPython pour Graph 35/75+E a vu son module builtins étendu :
Image

Elle dépasse nettement le MicroPython TI-Nspire désormais ! :bj:
  1. Casio Graph 35+E/75+E avec 230 entrées
  2. TI-Nspire avec 218 entrées
  3. module TI-Python pour TI-83 Premium CE avec 212 entrées
  4. NumWorks avec 210 entrées
  5. Casio Graph 90+E avec 197 entrées

Téléchargement : archives_voir.php?id=1824811
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41468
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Module TI-Python: découverte fonctions builtins cachées

Message non lude critor » 12 Jan 2019, 16:43

Pour ce que donne la fonction help() présente uniquement sur le module TI-Python, voir par ici :
viewtopic.php?p=238568#p238568
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41468
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor


Retourner vers News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 64 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1045 utilisateurs:
>1021 invités
>19 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)