π
<-

News 2024
October (12)
August (9)
July (10)
June (20)
May (14)
April (16)
March (7)
January (20)

News 2023
October (19)
August (14)
July (13)
June (21)
May (29)
April (24)
March (24)
January (24)

News 2022
October (23)
August (14)
July (15)
June (17)
May (31)
April (27)
March (28)
January (34)

News 2021
October (24)
August (37)
July (50)
June (32)
May (48)
April (61)
March (35)
January (34)

News 2020
October (17)
August (43)
July (43)
June (45)
May (60)
April (78)
March (36)
January (39)

News 2019
October (13)
August (18)
July (23)
June (28)
May (31)
April (26)
March (38)
January (37)

News 2018
October (13)
August (32)
July (23)
June (64)
May (63)
April (45)
March (43)
January (45)

News 2017
October (26)
August (39)
July (52)
June (88)
May (51)
April (43)
March (37)
January (33)

News 2016
October (25)
August (42)
July (34)
June (109)
May (55)
April (34)
March (37)
January (24)

News 2015
October (22)
August (56)
July (22)
June (94)
May (56)
April (32)
March (40)
January (21)

News 2014
October (26)
August (18)
July (23)
June (101)
May (57)
April (59)
March (54)
January (31)

News 2013
October (67)
August (50)
July (43)
June (193)
May (93)
April (102)
March (45)
January (50)

News 2012
October (64)
August (63)
July (53)
June (132)
May (88)
April (73)
March (57)
January (58)

News 2011
October (56)
August (31)
July (27)
June (71)
May (61)
April (32)
March (36)
January (24)

News 2010
October (11)
August (8)
July (14)
June (10)
May (3)
April (3)
March (1)

News 2009
August (3)
July (1)
June (2)
May (1)
April (2)
March (1)

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

New postby 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: Select all
#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 wrote: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 !... :'(

Mise à jour NumWorks 1.8.1 : 16K stockage scripts Python !

New postby Admin » 21 Nov 2018, 18:16

10033
La nouvelle version 1.8.1 pour ta calculatrice NumWorks est maintenant disponible. Découvrons ensemble les améliorations :
ImageImageImage


Application Python :Go to top

Une première nouveauté concerne ce qui avait déjà été annoncé dans le contexte de la diffusion de la version bêta 1.8.0.
Un défaut de la calculatrice NumWorks était son espace de stockage ridicule pour les scripts Python, 2.946Ko, extensible jusqu'à 4,094Ko en supprimant les scripts d'exemple préchargés.

Déjà insuffisant rien que pour faire tenir simultanément en mémoire les deux scripts Python de notre concours de rentrée.


Avec la version 1.8.1 tu n’es plus à l'étroit, l'espace de stockage passe à 15.234Ko extensible jusqu'à 16.382Ko; un quadruplement donnant quelque chose d’enfin comparable à la concurrence d'entrée de gamme ! :bj:

Notons que l’espace disponible sur la calculatrice se consulte à ce jour exclusivement en ligne sur https://workshop.numworks.com/python/calculator.

Autre chose de très bien sur NumWorks, c’est que lors de l’exécution d’un script Python la liste Fonctions et variables accessible avec la touche
var
était automatiquement préremplie avec l’ensemble des fonctions et variables globales définies par le script.

Cela pouvait toutefois être embêtant avec certains scripts, donnant une liste surchargée avec plusieurs entrées peu utiles.

Désormais, plutôt que de s’embêter avec des artifices alphabétiques peu confortables pour les renvoyer en fin de liste, il suffira tout simplement au développeur de préfixer les noms des variables globales dont il juge l’ajout à la liste peu utile avec le caractère tiret-bas ( _ ). :bj:
Code: Select all
#public global variables
n=3
platform=”numworks”
#hidden global variables
_key=3.24
_implementation=”micropython”


Application Calculs :Go to top

Le moteur de calcul a été entièrement réécrit avec en interne une meilleur gestion des éventuelles erreurs de mémoire, et en ce qui nous concerne pour la partie visible de nouvelles possibilités.

Déjà, comme sur les modèles formels haut de gamme il y a désormais la possibilité de faire des calculs avec l’infini notamment dans le contexte d’un travail sur les limites, le nombre infini étant à écrire inf. :bj:

Mais ce n’est pas tout, les fonctions logarithmes, trigonométriques inverses et hyperboliques inverses sont maintenant étendues aux nombres complexes ! :bj:

La simplification des logarithmes pouvait être problématique lorsque le paramètre était un nombre puissance de la base.
$mathjax$log_b(a)$mathjax$
avec
$mathjax$a=b^k$mathjax$
k est un entier positif. Dans ce cas la ‘simplification’ effectuée par la machine consistait à factoriser le nombre a sans tenir compte de la base du logarithme, ce qui pouvait conduire à des formes mal simplifiées, et dont l’écriture décimale pourtant exacte était de plus adjointe avec un symbole environ. Dorénavant, la simplification tiendra compte de la base. :)

Autre chose de remarquable sur la NumWorks dans le cadre des sciences expérimentales (Physique-Chimie notamment), c’est la possibilité de choisir un format de résultats selon la règle des chiffres significatifs. Mais la règle en question n’était pas toujours respectée, notamment pour les nombres dont l’écriture commençait par un ou plusieurs chiffres zéro, zéro étant dans ce cas comptabilisé à tort comme un chiffre significatif. Cette erreur est maintenant corrigée. :)

Un autre avantage exceptionnel sur la NumWorks c’est, lorsque approprié, la présentation des résultats sous deux formes, exacte et décimale, liées selon le cas par un symbole de relation adéquat, égale ou environ. Un problème arrivait par contre au changement d’applications, où toutes les relations dans l’historique de calcul étaient alors réaffichées systématiquement avec le symbole environ. Ce problème est dès à présent corrigé. :)


Application Paramètres :Go to top

Enfin dans l’application Paramètres les choix offerts pour la personnalisation des formats d’angles, nombres réels, saisies et nombres complexes sont à présent illustrés et de façon intuitive. :)


Notons également comme déjà remarqué dans la bêta qu'il s'agit de la toute première mise à jour firmware où l'on ne fonce plus dans le mur des 1024Kio de la mémoire Flash. Des optimisations ont permis d'en diminuer nettement la taille, libérant ainsi pas moins de 89Ko d'espace en mémoire Flash pour coder de futures améliorations - peut-être un module tortue pour Python ? ;)


Liens :

The Chicken Adventure I, nouveau Sokoban C TI-83 Premium CE

New postby critor » 23 Nov 2018, 16:26

Un esprit malin a pris le contrôle mental de la Lune et lui ordonne de s'écraser sur la Terre. Un scénario digne d'un Zelda et donc des plus grands noms vidéoludiques, n'est-ce pas ? :troll:

Mais cette fois-ci, oublie les facilités scénaristiques enfantines de Zelda Majora's Mask : pas d'Ocharina du Temps, de magie ou autre Deus ex machina pour éviter la catastrophe. :p

Non non, bienvenu dans le monde réel des adultes, l'astre lunaire s'écrase effectivement sur Terre, et l'esprit malin Super Poulet fait des humains ses esclaves, les métamorphasant tous en poulets.
93623 ans plus tard, les plus éminents parmi ces galinacés ont retrouvé les traces d'une ancienne légende ramenant l'espoir à toute la basse-cour... Pour rompre l'enchantement, il suffirait de remettre en place les statuettes dans le Temple de la Lune...

10037Bienvenue dans The Chicken Adventure I, une création programmée avec amour, passion et talent par PoulpoGaz, lycéen de Seconde, pour ta TI-83 Premium CE.

Dans ce nouveau jeu de type Sokoban comme BillyBox, tu devras donc remettre en place les statuettes à travers les 50 salles du temple. Prépare donc tes biceps et l'huile de coude, et prends garde à ne pas les coincer.

Le jeu est programmé en C, comme quoi aux âmes bien nées la valeur n'attend point le nombre des années, et le code source est disponible et consultable en ligne pour ceux qui souhaiteraient s'en inspirer pour d'autres créations.

Pour fonctionner correctement, le jeu aura besoin des bibliothèques C téléchargeables ci-dessous. Mais rien de bien compliqué, il suffit juste de les transférer.


De quoi passer agréablement le temps dans les barrages ce week-end peu importe ta couleur, merci PoulpoGaz ! ;)

Alors, cap d'atteindre et résoudre l'énigme de la 50ème salle, ou bien es-tu une poule mouillée ? :p


Téléchargements :

Mise à jour mViewer GX2 1.2 compatible HP Prime G2

New postby critor » 23 Nov 2018, 23:58

mViewer GX2 est notre solution de conversion de documents PDF ou séries d'images pour ta calculatrice HP Prime.

100421004010039Toutefois, comme signalé par nbenm, les documents convertis n'étaient pas affichés correctement sur la nouvelle HP Prime G2. Pour un document de 20 pages, le lecteur affichait dans l'ordre :
  • l'icône de l'application certes illustrée avec la page 1 mais totalement illisible si zoomée
  • la page 20
  • la page 19
  • ...
  • la page 3
  • la page 2
Le document était donc défilé à l'envers, et sans sa première page. :mj:

10043La cause de ce problème vient de la HP Prime G2 qui se comporte différemment de la HP Prime G1. Si la HP Prime G1 liste les fichiers associés à une application du premier au dernier, cette coquine de HP Prime G2 les liste à l'envers, du dernier au premier, et commence donc par le fichier d'icône de l'application.

10041mViewer GX2 est dès ce soir mis à jour dans une version 1.2 qui se veut compatible à la fois HP Prime G1 et HP Prime G2. L'application ne fait plus confiance à la calculatrice et effectue désormais un tri systématique de la liste de fichiers associés qui lui est communiquée.

Merci nbenm pour avoir rendu cette correction possible ! :bj:

Pour les documents traités avant ce soir, il faudra les convertir à nouveau. Tu n'es pas forcément obligé de retourner chercher les fichiers originaux, il te suffira d'accéder aux conversions de ton compte pour y éditer et revalider chaque document, ce qui suffira pour lui intégrer le nouveau code compatible HP Prime G2.


Lien : editgx.php?mode=46

Module TI-Python: exploration module math + comparaisons

New postby critor » 25 Nov 2018, 23:40

Cet article traite entre autres du module TI-Python, au sujet duquel il 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, sans pouvoir reprendre toutes les photos pour diverses contraintes lors du second événement.

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.

9931Dans 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 t'avions annoncé la présence du module math. Par la suite, nous avions exploré son module builtins.

Aujourd'hui, explorons son module math à l'aide du même script suivant :
Code: Select all
#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 50 entrées retranscrites ci-dessous :
TI-Python wrote:9975>>> from explmod import *
>>> import math
>>> explmod(math)
__name__='math'
.count()=<bound_method>
.endswith()=<bound_method>
.find()=<bound_method>
.format()=<bound_method>
.index()=<bound_method>
.isalpha()=<bound_method>
.isdigit()=<bound_method>
9971.islower()=<bound_method>
.isspace()=<bound_method>
.isupper()=<bound_method>
.join()=<bound_method>
.lower()=<bound_method>
.lstrip()=<bound_method>
.replace()=<bound_method>
.rfind()=<bound_method>
.rindex()=<bound_method>
.rsplit()=<bound_method>
9977.rstrip()=<bound_method>
.split()=<bound_method>
.startswith()=<bound_method>
.strip()=<bound_method>
.upper()=<bound_method>
Total: 22 item(s)
acos()=<function>
asin()=<function>
atan()=<function>
atan2()=<function>
ceil()=<function>
copysign()=<function>
cos()=<function>
degrees()=<function>
e=2.71828
exp()=<function>
fabs()=<function>
floor()=<function>
fmod()=<function>
frexp()=<function>
9984isfinite()=<function>
isinf()=<function>
isnan()=<function>
ldexp()=<function>
log()=<function>
modf()=<function>
9991pi=3.14159
pow()=<function>
radians()=<function>
sin()=<function>
sqrt()=<function>
tan()=<function>
trunc()=<function>
Total: 50 item(s)
50
>>>


Et bien comme tu vas le voir, ce n'est pas parce que deux calculatrices avec Python intègrent le module math qu'elles se valent. Voici ci-dessous la comparaison de ce que renvoient les différents modèles en lançant ce même script :
Casio
Graph 90+E
NumWorks
TI-Python
pour
TI-83 Premium CE
__name__='math'
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
ceil()
copysign()
cos()
cosh()
degrees()
e=2.718281828459045
erf()
erfc()
exp()
expm1()
fabs()
floor()
fmod()
frexp()
gamma()
isfinite()
isinf()
isnan()
ldexp()
lgamma()
log()
log10()
log2()
modf()
pi=3.141592653589793
pow()
radians()
sin()
sinh()
sqrt()
tan()
tanh()
trunc()
__name__='math'
acos()

asin()

atan()
atan2()

ceil()

cos()


e=2.718281828459045


exp()

fabs()
floor()
fmod()
frexp()




ldexp()

log()
log10()

modf()
pi=3.141592653589793
pow()

sin()

sqrt()
tan()

trunc()
__name__='math'
acos()

asin()

atan()
atan2()

ceil()
copysign()
cos()

degrees()
e=2.718281828459045


exp()

fabs()
floor()
fmod()
frexp()

isfinite()
isinf()
isnan()
ldexp()

log()


modf()
pi=3.141592653589793
pow()
radians()
sin()

sqrt()
tan()

trunc()
__name__='math'
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
ceil()
copysign()
cos()
cosh()
degrees()
e=2.718281828459045
erf()
erfc()
exp()
expm1()
fabs()
floor()
fmod()
frexp()
gamma()
isfinite()
isinf()
isnan()
ldexp()
lgamma()
log()
log10()
log2()
modf()
pi=3.141592653589793
pow()
radians()
sin()
sinh()
sqrt()
tan()
tanh()
trunc()
__name__='math'
acos()

asin()

atan()
atan2()

ceil()
copysign()
cos()

degrees()
e=2.71828


exp()

fabs()
floor()
fmod()
frexp()

isfinite()
isinf()
isnan()
ldexp()

log()


modf()
pi=3.14159
pow()
radians()
sin()

sqrt()
tan()

trunc()
Total: 67Total: 47Total: 50Total: 63Total: 50


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

Les implémentations les plus complètes du module math concernent à ce jour de loin les NumWorks et TI-Nspire.

Les implémentations Casio Graph 90+E, Casio Graph 35/75+E et TI-Python pour TI-83 Premium CE à la différence ne retiennent que ce qui a été jugé utile à un niveau lycée par le ou les développeurs, avec quelques variations d'un modèle à un autre.

Outre l'absence de diverses fonctions dont les fonctions hyperboliques et logarithmes en base 2 et 10, notons que le module TI-Python semble également travailler sur des flottants en simple précision (32-bits), vu le nombre ridicule de décimales affichées pour les constantes de ce module...

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
820 utilisateurs:
>794 invités
>17 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)