π
<-
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:
En ligne

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: 218
Total: 197
Total: 218
Total: 210
Total: 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 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Prochain niv.: 79%
 
Messages: 31044
Images: 7340
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
Classe: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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
parissePremium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 45.8%
 
Messages: 1459
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié

En ligne

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 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Prochain niv.: 79%
 
Messages: 31044
Images: 7340
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
Classe: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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
parissePremium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 45.8%
 
Messages: 1459
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié

En ligne

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 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Prochain niv.: 79%
 
Messages: 31044
Images: 7340
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
Classe: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti


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 7 invités

-
Rechercher
-
Sujets à la une
"NumWorks++": Challenge de modification matérielle pour rajouter une puce de mémoire Flash !
Offre TI-Planet/Jarrety pour avoir la TI-83 Premium CE avec son chargeur pour 79,79€ port inclus !
Offre TI-Planet/Jarrety pour avoir la TI-Nspire CX CAS à seulement 130€ TTC port inclus!
Jailbreake ta TI-Nspire avec Ndless et profite des meilleurs jeux et applications !
Transforme ta TI-Nspire CX en console Game Boy Advance!
12345
-
Donations/Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
PayPal : paiement en ligne sécurisé - secure online payments
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 
-
Stats.
443 utilisateurs:
>387 invités
>50 membres
>6 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)