Module TI-Python : table de caractères avec ASCII étendu !
Posted: 17 Dec 2018, 12:40
De quels caractères disposons-nous pour les affichages de scripts Python sur nos Pythonnettes ?
Nous pouvons utiliser la fonction
La Casio Graph 90+E accepte 256 codes de caractères (soit 8 bits).
Des codes 32 (0x20) à 126 (0x7e), on retrouve les 95 caractères affichables du standard ASCII-1967 (7 bits).
En-dessous du caractère de code 32 et au-dessus du caractère de code 126, la machine n'affiche que des espaces.
Elle n'est donc capable d'afficher que 95 caractères différents.
La Casio Graph 35/75+E avec l'application CasioPython a un comportement similaire mais nous réserves quelques surprises.
Oute les 95 caractères affichables de l'ASCII 7 bits, en-dessous du caractère de code 32 la machine nous rajoute un caractère en forme de rectangle. Et au-dessus du caractère de code 126 elle nous rajoute 97 caractères non identifiables, car constitués de pixels désordonnés, de quoi ravir les amateurs d'ascii-art !
Au total la machine permet donc d'afficher 95+1+97=193 caractères différents.
Le logiciel web NumWorks malgré un comportement similaire est encore plus surprenant.
En plus des 95 caractères ASCII 7 bits, au-delà du caractère de code 126, elle nous rajoute 22 caractères spéciaux utilisés en sciences. Puis au-delà du code 151 (0x97), nous avons droit à 104 caractères à pixels désordonnés, mais en prime en niveaux de gris, de quoi pousser l'ascii-art à l'extrême comme tu peux le constater ci-contre... ainsi que 29 autres du même style en-dessous du code 32 !
Au total nous avons donc 95+22+104+29=250 caractères visuellement différents.
La caculatrice NumWorks quant à elle diffère quelque peu.
En plus des 95 caractères ASCII 7 bits, au-delà du caractère de code 126, elle nous rajoute non pas 22 mais 23 caractères spéciaux utilisés en sciences. Puis au-delà du code 151 (0x97), nous avons droit non pas à des caractères à pixels désordonnés, mais à un point en écriture inversé... et pareil en-dessous du code 32.
Au total la machine offre donc 95+23+1 caractères visuellement différents.
La HP Prime en écriture Python a un comportement différent, dans le sens où la fonction
En plus des 95 caractères ASCII 7 bits, nous avons 1 caractère en forme de rectangle.
La machine ne permet donc que 95+1=96 affichages de caractères différents.
La Graph 90+E avec l'application KhiCAS se comporte de façon similaire, mais est plus généreuse.
Aux 95 caractères ASCII 7 bits, elle rajoute 29 symboles utilisables pour les sciences dont un en couleur avant le code 32, 12 autres à partir du code 128 (0x80), 7 symboles permettant d'afficher sur plusieurs lignes de grandes parenthèses ou intégrales à partir du code 140 (0x8C), puis 15 autres symboles scientifiques dont encore un de couleur à partir du code 146 (0x92).
Nous avons donc au total 95+29+12+7+15=158 caractères différents affichables.
La TI-Nspire avec le programme Ndless MicroPython se comporte différemment en autorisant 1114112 codes de caractères différents (20 bits + 16 bits).
Sur les 7 premiers bits on retrouve les 95 caractères affichables de l'ASCII, un damier en code 127, et 27 caractères spéciaux divers en dessous du code 32.
A partir du code 128 on a accès à plein d'autres caractères spéciaux illustrant la richesse de la table de caractères TI-Nspire, mais hélas ils sont mal affichés à cause d'un bug, ils se voient préfixés d'un ou plusieurs caractères de contrôle. Ne pouvant ainsi être affichés proprement (en tant que caractère unique) par un script, nous ne pouvons donc pas les comptabiliser.
La machine n'affiche donc au total que 95+1+27=123 caractères différents.
Donnons la priorité aux caractères standard saisissables donc facilement et utilisables sur différentes plateformes. Nous avons donc pour le moment le classement suivant :
Nous pouvons utiliser la fonction
chr(n)
dans le script suivant afin de récupérer la table des caractères :- Code: Select all
#0= MicroPython / TI-Nspire
#1= MicroPython / NumWorks
#2= MicroPython / Graph 90+E
#3= MicroPython / Graph 35/75+E
#4= CircuitPython / TI-Python
#5= Xcas / HP Prime
#6= KhiCAS / Graph 90+E
def getplatform():
r=-1
try:
if chr(256)==chr(0):
r=5+(not ("HP" in version()))
else:
r=4*(len(str(1/3))<18)
except:
try:
bytearray
r=3
except:
try:
enumerate
r=1
except:
r=2
return r
def dig2hex(n):
if n<10 : return str(n)
else: return chr(ord("A")+n-10)
def chars(n=256):
ncol,nlgn,slgn,platform=16,n/16,"CH|",getplatform()
pchars=["\b\t\n\r","\t\n\0","\a\b\t\n\v\f\r","\3\b\n\r\x1b","\3\b\t\n\r\x1b","\n\f\0","\n\0"]
schars=pchars[platform]
for col in range(ncol):
slgn+=dig2hex(col)
print(""+slgn+"|\n--+"+"-"*ncol+"+")
for lgn in range(nlgn):
slgn=dig2hex(lgn)+"_|"
for col in range(ncol):
n=lgn*16+col
car=chr(n)
if car in schars:
car=" "
slgn+=car
print(""+slgn+"|")
La Casio Graph 90+E accepte 256 codes de caractères (soit 8 bits).
Des codes 32 (0x20) à 126 (0x7e), on retrouve les 95 caractères affichables du standard ASCII-1967 (7 bits).
En-dessous du caractère de code 32 et au-dessus du caractère de code 126, la machine n'affiche que des espaces.
Elle n'est donc capable d'afficher que 95 caractères différents.
La Casio Graph 35/75+E avec l'application CasioPython a un comportement similaire mais nous réserves quelques surprises.
Oute les 95 caractères affichables de l'ASCII 7 bits, en-dessous du caractère de code 32 la machine nous rajoute un caractère en forme de rectangle. Et au-dessus du caractère de code 126 elle nous rajoute 97 caractères non identifiables, car constitués de pixels désordonnés, de quoi ravir les amateurs d'ascii-art !
Au total la machine permet donc d'afficher 95+1+97=193 caractères différents.
Le logiciel web NumWorks malgré un comportement similaire est encore plus surprenant.
En plus des 95 caractères ASCII 7 bits, au-delà du caractère de code 126, elle nous rajoute 22 caractères spéciaux utilisés en sciences. Puis au-delà du code 151 (0x97), nous avons droit à 104 caractères à pixels désordonnés, mais en prime en niveaux de gris, de quoi pousser l'ascii-art à l'extrême comme tu peux le constater ci-contre... ainsi que 29 autres du même style en-dessous du code 32 !
Au total nous avons donc 95+22+104+29=250 caractères visuellement différents.
La caculatrice NumWorks quant à elle diffère quelque peu.
En plus des 95 caractères ASCII 7 bits, au-delà du caractère de code 126, elle nous rajoute non pas 22 mais 23 caractères spéciaux utilisés en sciences. Puis au-delà du code 151 (0x97), nous avons droit non pas à des caractères à pixels désordonnés, mais à un point en écriture inversé... et pareil en-dessous du code 32.
Au total la machine offre donc 95+23+1 caractères visuellement différents.
La HP Prime en écriture Python a un comportement différent, dans le sens où la fonction
chr(n)
accepte des codes de caractères supérieurs à 255, mais pour boucler et donc afficher à nouveau les mêmes caractères qu'à partir du code 0.En plus des 95 caractères ASCII 7 bits, nous avons 1 caractère en forme de rectangle.
La machine ne permet donc que 95+1=96 affichages de caractères différents.
La Graph 90+E avec l'application KhiCAS se comporte de façon similaire, mais est plus généreuse.
Aux 95 caractères ASCII 7 bits, elle rajoute 29 symboles utilisables pour les sciences dont un en couleur avant le code 32, 12 autres à partir du code 128 (0x80), 7 symboles permettant d'afficher sur plusieurs lignes de grandes parenthèses ou intégrales à partir du code 140 (0x8C), puis 15 autres symboles scientifiques dont encore un de couleur à partir du code 146 (0x92).
Nous avons donc au total 95+29+12+7+15=158 caractères différents affichables.
La TI-Nspire avec le programme Ndless MicroPython se comporte différemment en autorisant 1114112 codes de caractères différents (20 bits + 16 bits).
Sur les 7 premiers bits on retrouve les 95 caractères affichables de l'ASCII, un damier en code 127, et 27 caractères spéciaux divers en dessous du code 32.
A partir du code 128 on a accès à plein d'autres caractères spéciaux illustrant la richesse de la table de caractères TI-Nspire, mais hélas ils sont mal affichés à cause d'un bug, ils se voient préfixés d'un ou plusieurs caractères de contrôle. Ne pouvant ainsi être affichés proprement (en tant que caractère unique) par un script, nous ne pouvons donc pas les comptabiliser.
La machine n'affiche donc au total que 95+1+27=123 caractères différents.
Donnons la priorité aux caractères standard saisissables donc facilement et utilisables sur différentes plateformes. Nous avons donc pour le moment le classement suivant :
- Casio Graph 90+E avec l'application KhiCAS et 158 caractères
- TI-Nspire avec le programme Ndless MicroPython et 123 caractères
- calculatrice NumWorks avec 119 caractères
- logiciel web NumWorks avec 250 caractères, mais dont seulement 117 caractères identifiables
- Casio Graph 35/75+E avec l'application CasioPython et 193 caractères, mais avec seulement 96 caractères identifiables
- HP Prime avec 96 caractères
- Casio Graph 90+E avec 95 caractères
Et où se classe le module TI-Python pour TI-83 Premium CE là-dedans ?
Déjà, il adopte un comportement similaire à celui de la TI-Nspire en autorisant lui aussi 1114112 codes différents.
Exécutons le script (photo ci-contre prise avec une ancienne version du script puisque nous ne disposons hélas toujours pas du module, l'affichage du nouveau script est reconstruit ci-dessous à partir des résultats observés) :
On retrouve les 95 caractères affichables de l'ASCII 7 bits. En-dessous du code 32 on retrouve un caractère rectangle, ainsi qu'en code 128.
A compter du code 129, on note 13 caractères spécifiques à la TI-83 Premium CE. Puis surprise, à partir du code 161 (0xa1) on trouve 95 caractères provenant du code ASCII étendu ANSI (8 bits) avec donc entre autres plein de lettres accentuées et autres caractères spéciaux pour les pays d'Europe de l'Ouest.
Par contre au-delà du code 255 la calculatrice n'affiche plus rien d'intéressant, que des caractères rectangle.
Ce qui donne au total 95+1+13+95=204 caractères différents affichables.
Nous avons donc maintenant niveau classement :
Déjà, il adopte un comportement similaire à celui de la TI-Nspire en autorisant lui aussi 1114112 codes différents.
Exécutons le script (photo ci-contre prise avec une ancienne version du script puisque nous ne disposons hélas toujours pas du module, l'affichage du nouveau script est reconstruit ci-dessous à partir des résultats observés) :
TI-Python wrote:>>>chars(320)
CH|0123456789ABCDEF|
0_|□□□ □□□□ □□ □□|
1_|□□□□□□□□□□□ □□□□|
2_| !"#$%&'()*+,-./|
3_|0123456789:;<)>?|
4_|@ABCDEFGHIJKLMNO|
5_|PQRSTUVWXYZ[\]^_|
6_|`abcdefghijklmno|
7_|pqrstuvwxyz{|}~ |
8_|□∙◄►▲▼…⸥_Aa↑▒ |
9_| |
A_| ¡¢£¤¥¦§¨©ª«¬ ®¯|
B_|º±²³´µ¶·¸¹º»¼½¾¿|
C_|ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ|
D_|ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß|
E_|àáâãäåæçèéêëìíîï|
F_|ðñòóôõö÷øùúûüýþÿ|
G_|□□□□□□□□□□□□□□□□|
H_|□□□□□□□□□□□□□□□□|
I_|□□□□□□□□□□□□□□□□|
J_|□□□□□□□□□□□□□□□□|
On retrouve les 95 caractères affichables de l'ASCII 7 bits. En-dessous du code 32 on retrouve un caractère rectangle, ainsi qu'en code 128.
A compter du code 129, on note 13 caractères spécifiques à la TI-83 Premium CE. Puis surprise, à partir du code 161 (0xa1) on trouve 95 caractères provenant du code ASCII étendu ANSI (8 bits) avec donc entre autres plein de lettres accentuées et autres caractères spéciaux pour les pays d'Europe de l'Ouest.
Par contre au-delà du code 255 la calculatrice n'affiche plus rien d'intéressant, que des caractères rectangle.
Ce qui donne au total 95+1+13+95=204 caractères différents affichables.
Nous avons donc maintenant niveau classement :
- module TI-Python pour TI-83 Premium CE avec 204 caractères
- Casio Graph 90+E avec l'application KhiCAS et 158 caractères
- TI-Nspire avec le programme Ndless MicroPython et 123 caractères
- calculatrice NumWorks avec 119 caractères
- logiciel web NumWorks avec 250 caractères, mais dont seulement 117 caractères identifiables
- Casio Graph 35/75+E avec l'application CasioPython et 193 caractères, mais avec seulement 96 caractères identifiables
- HP Prime avec 96 caractères
- Casio Graph 90+E avec 95 caractères