Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » CASIO MicroPython: Savoir si le programme s’exécute sur un ordinateur ou sur la calto
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

CASIO MicroPython: Savoir si le programme s’exécute sur un ordinateur ou sur la calto

Posté le 13/11/2019 19:34

Bonjour bonjour,

Etant donné la variété de supports sur lesquels python peut s'exécuter, je vous donne ce petit truc qui ne vient pas de moi, que j'ai trouvé sur internet en réalisant une recherche sur une commande python. Cette astuce permet au programme de savoir sur quel support il s'exécute.

Tout d'abords une petite explication de texte (et oui, je mets le suspens ).
L'idée c'est d’essayer d'importer des modules qui sont par défaut intégrés dans les IDE pour ordinateurs (ILDE...) et qui ne sont pas présents sur le MicroPython de CASIO. Je pense par exemple à tkinter, turtle, time, os...

Voici maintenant un code d'exemple:
try:
    import tkinter
    import turtle
    import time
    import os
    print("computer")
except ImportError:
    print("CASIO COMPUTER CO., LTD.")


Donc voilà, merci d'avoir pris le temps de lire le tout, j'espère que ça vous servira pour développer des programmes multi-supports en python.

Sur ce, A+


Kikoodx Hors ligne Ancien labélisateur Points: 3011 Défis: 11 Message

Citer : Posté le 13/11/2019 19:42 | #


Salut !
Encore mieux :
try:
  open("","")
  print("Casio")
except:
  print("any other Python")

ouais ouais
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2019 20:15 | #


Ah oui, pas idiot

Ajouté le 13/11/2019 à 20:23 :
Comment tu utilises la commande open() sur le MicroPython ? Je connais le truc en python sur l'ordi mais ça ne fonctionne pas..
Lephenixnoir Hors ligne Administrateur Points: 24259 Défis: 170 Message

Citer : Posté le 13/11/2019 20:41 | #


Vous pouvez aussi regarder le script Python du concours de rentrée, qui sait distinguer de nombreuses plateformes de calculatrices...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2627 Défis: 18 Message

Citer : Posté le 13/11/2019 20:42 | #


Astuce fort intéressante, merci.
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2019 20:43 | #


@Lephenixnoir: il fonctionne sur g90 ?

Comment on utilise la fonction open() de MircoPython qui agit sur les fichiers ?
Lephenixnoir Hors ligne Administrateur Points: 24259 Défis: 170 Message

Citer : Posté le 13/11/2019 20:50 | #


La fonction open() de MicroPython s'utilise eh bien... comme le demande le standard Python : https://docs.python.org/3/library/functions.html#open
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2019 21:10 | #


Oui mais on obtient un objet de type None.. je ne parvient pas a utiliser ce que renvoie cette fonction..
Lephenixnoir Hors ligne Administrateur Points: 24259 Défis: 170 Message

Citer : Posté le 13/11/2019 21:13 | #


Tu obtiens None si l'ouverture du fichier échoue. open("", "") n'est pas un appel intéressant, ici il sert à juste à déterminer si la fonction est disponible.

Si tu veux faire quelque chose d'utile, essaye quelque chose de ce genre :

with open("blake.txt", "w+") as fp:
  fp.write("Tiger, tiger burning bright, in the forests of the night.")
  fp.write("What immortal hand or eye could frame thy fearful symmetry?")

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2019 21:15 | #


Je tiens a preciser que je fais ça sur G90 actuellement.. ça ne fonctionne pas sur g90..
Lephenixnoir Hors ligne Administrateur Points: 24259 Défis: 170 Message

Citer : Posté le 13/11/2019 21:16 | #


Bien sûr que ça ne marche pas sur G90, on se tue à le dire et ça ne marchera possiblement jamais correctement selon les limitations du système de fichiers. x)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2019 21:18 | #


Ben du coup oui je me doutais, je sais que vous le dites souvent j'en suis témoin (je vois pas pk je m'acharne alors sur ce truc ).
Mais dans ce cas que fait la fonction open() si on ne peut pas l'utiliser
Kikoodx Hors ligne Ancien labélisateur Points: 3011 Défis: 11 Message

Citer : Posté le 13/11/2019 21:46 | #


Justement, le Python de la 90+e est le seul à ne pas renvoyer d'erreur avec ces paramètres, de toute façon elle renvoie None
C'est le principe de la vérification

Ajouté le 14/11/2019 à 07:36 :
Disperseur a écrit :
Ah oui, pas idiot

Ajouté le 13/11/2019 à 20:23 :
Comment tu utilises la commande open() sur le MicroPython ? Je connais le truc en python sur l'ordi mais ça ne fonctionne pas..

Disperseur a écrit :
Ben du coup oui je me doutais, je sais que vous le dites souvent j'en suis témoin (je vois pas pk je m'acharne alors sur ce truc ).
Mais dans ce cas que fait la fonction open() si on ne peut pas l'utiliser


Explication plus détaillée : open renvoie, sur Casio, un objet None à partir du moment où ses paramètres sont deux chaînes.
C'est le seul à faire ça, deux chaînes vides renvoient une erreur lorsque exécuté sur un ordinateur (ou n'importe quel interpréteur supportant réellement open).
ouais ouais
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 14/11/2019 07:44 | #


D'accord, du coup on se demande bien ce qu'elle fait la cette pseudo fonction open()
Kikoodx Hors ligne Ancien labélisateur Points: 3011 Défis: 11 Message

Citer : Posté le 14/11/2019 07:49 | #


Disperseur a écrit :
D'accord, du coup on se demande bien ce qu'elle fait la cette pseudo fonction open()

Je viens de l'expliquer -_-"
Pour faire simple, open("", "") renvoie une erreur sur toutes les plateformes excepté le Python de Casio.
ouais ouais
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 14/11/2019 07:52 | #


Oui nan mais ça j'avais compris . Du coup si on suit à la lettre ce que tu dis, Casio aurait mis la fonction uniquement pour permettre de détecter le support d'execution ?
Kikoodx Hors ligne Ancien labélisateur Points: 3011 Défis: 11 Message

Citer : Posté le 14/11/2019 07:55 | #


Disperseur a écrit :
Oui nan mais ça j'avais compris . Du coup si on suit à la lettre ce que tu dis, Casio aurait mis la fonction uniquement pour permettre de détecter le support d'execution ?

Non, pas du tout, c'est juste une exploitation de leur système de fichier non implémenté.
ouais ouais

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 71 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd