π
<-
Chat plein-écran
[^]

Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilogue

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude critor » 27 Mar 2021, 21:58

critor a écrit:Donc, il y avait en version 5.2 un bug avec le module Python ti_image, traité dans l'article et que je rappelle ici.

Lorsque l'on insère une ressource image dans un document .tns via l'éditeur de script Lua :
  • l'image est affichée correctement par un script Lua
  • mais l'image est affichée à l'envers par un script Python, et parfois pire avec une distorsion horizontale




Espérons que ce sera enfin corrigé pour la version 5.3, mise à jour annuelle à venir d'ici la rentrée 2021 je suppose.



Autre bug découvert ces derniers jours et ici majeur, puisque pouvant à la différence impacter un très large éventail de scripts.
La fonction round() génère une exception si :
  • on lui demande d'arrondir un nombre entier
  • tout en précisant le nombre de décimales souhaitées

Bien sûr aucun intérêt à arrondir un entier, mais dans le contexte d'un script, il est parfaitement possible de temps en temps que les valeurs traitées soient entières.
Personnellement, je m'en suis rendu compte en intégrant un turtle.py à certains de mes documents .tns, script qui fonctionnait parfaitement sur d'autres plateformes. Certains mouvements de la tortue généraient donc une exception, lorsque les valeurs géométriques calculées en interne étaient donc entières.

Le bug n'est pas présent sur les TI-83PCE/84+CE ni sur les modèles concurrents, ces derniers n'ont aucune difficulté à arrondir.

Adriweb a écrit:C'est embarrassant ca...

Mais bon en attendant ce n'est pas compliqué de se créer un "wrapper":

Code: Tout sélectionner
round_ = round

def is_integer_num(n):
    if isinstance(n, int):
        return True
    if isinstance(n, float):
        return n.is_integer()
    return False

def round(n, p):
  return n if is_integer_num(n) else round(n, p)


... ou un truc dans ce genre (pas testé)

Merci. :)
À intégrer donc en début de chaque script Python TI-Nspire CX II utilisant round().
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude Lionel Debroux » 27 Mar 2021, 21:58

Embarrassant, le mot est faible. Une fonction round() qui ne fonctionne pas, sérieusement...
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude critor » 27 Mar 2021, 22:10

critor a écrit:Autre bug découvert ces derniers jours et ici majeur, puisque pouvant à la différence impacter un très large éventail de scripts.
La fonction round() génère une exception si :
  • on lui demande d'arrondir un nombre entier
  • tout en précisant le nombre de décimales souhaitées

Bien sûr aucun intérêt à arrondir un entier, mais dans le contexte d'un script, il est parfaitement possible de temps en temps que les valeurs traitées soient entières.
Personnellement, je m'en suis rendu compte en intégrant un turtle.py à certains de mes documents .tns, script qui fonctionnait parfaitement sur d'autres plateformes. Certains mouvements de la tortue généraient donc une exception, lorsque les valeurs géométriques calculées en interne étaient donc entières.

Le bug n'est pas présent sur les TI-83PCE/84+CE ni sur les modèles concurrents, ces derniers n'ont aucune difficulté à arrondir.

Adriweb a écrit:C'est embarrassant ca...

Mais bon en attendant ce n'est pas compliqué de se créer un "wrapper":

Code: Tout sélectionner
round_ = round

def is_integer_num(n):
    if isinstance(n, int):
        return True
    if isinstance(n, float):
        return n.is_integer()
    return False

def round(n, p):
  return n if is_integer_num(n) else round(n, p)


... ou un truc dans ce genre (pas testé)

Peut-être ai-je manque de clareté, désolé.

Le bug de la fonction round() concerne uniquement le type entier.
Elle n'a aucun problème avec les flottants de valeur entière.

Donc on peut simplifier le correctif :
Code: Tout sélectionner
round_ = round

def round(n, p=0):
  return n if isinstance(n, int) else round_(n, p)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude Adriweb » 27 Mar 2021, 22:11

Ah ben oui, en effet :)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude cent20 » 28 Mar 2021, 10:20

Ce n'est pas plus simple ça :

Code: Tout sélectionner
round_ = round

def round(n, p):
  return n if n == int(n) else round_(n, p)
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1009
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude Bisam » 28 Mar 2021, 13:04

isinstance(n, int) est bien plus général et ne renverra pas d'erreur si la fonction int ne s'applique pas à son type, par exemple si n est une liste.
Par ailleurs, la méthode est plus efficace puisque elle va se contenter de vérifier le type de la variable, sans se préoccuper de sa valeur ni faire de calcul ou de test avec cette valeur. C'est un gain particulièrement substantiel si n est un très grand entier.

Code: Tout sélectionner
import time

def test1(essais = 10000000):
    n = 3**51361 - 1
    deb = time.monotonic()
    for _ in range(essais):
        n == int(n)
    return time.monotonic() - deb

def test2(essais = 10000000):
    n = 3**51361 - 1
    deb = time.monotonic()
    for _ in range(essais):
        isinstance(n, int)
    return time.monotonic() - deb


L'entier n choisi a été pris au hasard dans le seul but d'être grand et pas trop facilement représentable en binaire.

Si on lance "test1()" avec 10 millions d'essais, cela s'effectue en 1,1s environ.
Si on lance "test2()" avec 10 millions d'essais, cela s'effectue en 0,7s environ, soit un gain d'environ 40%.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude cent20 » 28 Mar 2021, 18:34

Bisam a écrit:isinstance(n, int) est bien plus général et ne renverra pas d'erreur si la fonction int ne s'applique pas à son type, par exemple si n est une liste.


Hum ... La fonction round() n'est pas prévue pour gérer des listes il me semble.

round(number[, ndigits])

Bisam a écrit:Par ailleurs, la méthode est plus efficace puisque elle va se contenter de vérifier le type de la variable, sans se préoccuper de sa valeur ni faire de calcul ou de test avec cette valeur. C'est un gain particulièrement substantiel si n est un très grand entier.

Code: Tout sélectionner
import time

def test1(essais = 10000000):
    n = 3**51361 - 1
    deb = time.monotonic()
    for _ in range(essais):
        n == int(n)
    return time.monotonic() - deb

def test2(essais = 10000000):
    n = 3**51361 - 1
    deb = time.monotonic()
    for _ in range(essais):
        isinstance(n, int)
    return time.monotonic() - deb


L'entier n choisi a été pris au hasard dans le seul but d'être grand et pas trop facilement représentable en binaire.

Si on lance "test1()" avec 10 millions d'essais, cela s'effectue en 1,1s environ.
Si on lance "test2()" avec 10 millions d'essais, cela s'effectue en 0,7s environ, soit un gain d'environ 40%.


Je note donc que le code avec le test n == int(n) est 40% moins efficace

>>> test1()
1.875
>>> test2()
1.281

par contre tu tords un peu le comparatif avec ton n = 3**51361 - 1 ... et tu oublies d'appeler les fonctions intermédiaires d'Adrien.

EDIT1 : Je viens de refaire le test avec n=42 ou n=666 il y a toujours les 40% d'écart, il n'était donc pas nécessaire de chercher le diable avec 3**51361 - 1

EDIT2 : Je viens de faire le test avec l'intégralité des fonctions, il y a toujours cet écart de 40%.

Je prend donc note que je mon code est pas optimisé, ceci dit je n'en suis pas encore là dans mon autoformation à partir de 0... :D

Ah sinon, j'ai testé sur une NumWorks, tout fonctionne bien.
Il suffit donc de prendre une NumWorks, je suis sur qu'en plus elle est plus rapide que la Nspire d'au moins 42% ! B-)
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1009
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude cent20 » 28 Mar 2021, 18:39

Et fait j'ai fait un quiproquo tout seul... Ma réponse "ce n'est pas plus simple ça" c'était par rapport au code d'Adrien, je n'avais pas lu le message trop long de critor ... :mmm: et il contenait une version en 3 lignes...

Je parlais donc de la simplicité en terme de longueur, mais je n'avais aucune idée de l'efficacité ou non du code, merci Bisam pour ces précisions.
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1009
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude critor » 28 Mar 2021, 20:17

Tiens, autre problème qui semble avoir été introduit en version 5.1 ou 5.2 (comme je ne peux pas downgrader et que je n'ai pas d'émulateur, je ne sais pas exactement), une erreur de traduction qui rend l'interface d'activation du mode examen incompréhensible en Français.

En anglais le moteur CAS peut-être mis à On / Off, ce qui en version 5.0 était initialement traduit en Activé / Désactivé.
En version 5.2, la traduction du On en Activé a été remplacée par Sur !
ImageImageImage

Même problème sur la TI-Nspire CX II-T pour la désactivation ou pas du moteur de calcul exact :
ImageImage

Cela pourrait être mal compris par certains candidats, qui plus est un jour d'épreuves...
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Sortie/test TI-Nspire CX II 5.2 Python + QCC 2020 épilog

Message non lude Afyu » 30 Mar 2021, 15:47

Parce que "on" peut se traduire par "sur". Et visiblement, ils n'ont pas vérifié leur traduction. :facepalm:
Avatar de l’utilisateur
AfyuVIP++
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 90.1%
 
Messages: 339
Images: 18
Inscription: 30 Oct 2019, 19:17
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: plutôt, oui :)

PrécédenteSuivante

Retourner vers News TI-Nspire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 65 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.
1211 utilisateurs:
>1198 invités
>8 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)