La carte serveur, elle, va uniquement écouter les messages. Si elle reçoit un message avec la clé (
name) CALCUL, va attribuer à une variable nommée
resultat le calcul présent dans le message (
value). Pour cela, on va utiliser le bloc permettant d’exécuter du code python à partir d’une chaîne de caractères :

La chaîne de caractères envoyée par la carte client ne contient que le calcul à effectuer, il faut donc construire une chaîne qui permet de stocker le résultat de ce calcul dans la variable
resultat. Voici comment faire :

Il faudra aussi prendre en charge le fait que l’utilisateur peut envoyer une expression invalide. Dans une logique de robustesse (et de
monkey testing, où l’on teste volontairement des entrées imprévues ou malformées), il faut éviter qu’un code invalide provoque une erreur qui fait “crasher” la carte. Il faut donc encapsuler le bloc d’exécution de code Python dans un bloc try/except, qui est lui capable de détecter les erreurs, et d’effectuer une action spéciale lorsque cela arrive. Dans notre cas, si le calcul reçu provoque une erreur, on renverra un message de type RESULTAT comportant le texte “erreur” :

Enfin, il faudra renvoyer le résultat par radio, en utilisant un message de type RESULTAT.
Si tu es bloqué :
- Vérifie que tu n’exécutes le bloc « exécuter le code Python » que lorsque la clé du message reçu est CALCUL.
- Assure-toi que la chaîne passée à ce bloc est bien de la forme resultat = suivie du calcul reçu (sans guillemets autour du calcul).
- Après le calcul, envoie un message de type RESULTAT dont la valeur est la variable resultat, et non le texte du calcul.