Les exercices Python
Introduction
Le cours IoT utilise le langage MicroPython, une version de Python restreinte, basé sur Python-3.5 et adapté à des microcontrôleurs. Le cours suppose une connaissance de programmation en général et une connaissance du langage de programmation Python en particulier.
Une carte CPU avec le processeur ESP32-WROVER-B est utilisé sur laquelle le portage de MicroPython pour le chip ESP32 est installé.
Si la connaissance Python est insuffisante, il sera nécessaire de l'améliorer en étudiant p.e.
le tutoriel Python. La
documentation de MicroPython décrit les différences enter la version Python standard (CPython) et MicroPython ainsi que les modules mise à disposition pour accéder à la fonctionnalité spécifique de l'ESP32 et des pilotes pour un nombre de capteurs disponible pour le ESP32.
Les exercices Python purs
Les premières exercices vous permettent de vérifier vos compétences en Python. Ils nécessitent aucun hardware à part le processeur avec l'interpréteur Python et les solutions peuvent être exécuté sur un PC aussi bien que sur l'ESP32.
Exercice 1: Utilisation du REPL (Read, Evaluate,Print Loop)
Connecter l'ESP32 à minicom ou thonny. Vous pouvez essayer cet exercice aussi avec CPython sur PC.
Après connexion on obtient le prompt de MicroPython
En utilisant REPL:
- Imprimer "Hello World!"
- Lire un texte avec input() et l'imprimer
- Calculer
- Calculer sin(30°)
S'il y a des erreurs, comment les corriger ? Est-ce que le résultat est correct ?
- Finalement convertir "Hello World!" en un script et l'exécuter.
Exercice 2: Un Calculateur simple
Écrire un script qui attribue les valeurs 5 et 3 aux variables a et b respectivement.
Imprimer les résultats des calculs :
Imprimer les résultats avec un format décimal et un format flottant.
Améliorer le programme en demandant l'utilisateur d'entrer un opérant suivi d'un opérateur suivi du deuxième opérant, séparé par des espaces. Voilà ce qu'on doit voir sur l'écran :
Si l'utilisateur se trompe et il entre une valeur fausse (p.e. un opérant non numérique) ceci peut arriver :
Est-ce que vous pouvez capturer cette erreur et simplement re-demander d'entrer le calcul à exécuter ?
Exercice supplémentaire plus difficile :
Il est assez facile d'écrire un analyseur du texte entré par l'utilisateur si opérant et opérateur sont séparé par une espace (voir la méthode "split" de l'objet "string"). Il est beaucoup plus difficile si on permet d'omettre ces espaces. Est-ce que vous pouvez écrire un analyseur pour ce cas ?
Indice : Une solution très élégante peut être trouvé avec les expressions régulières et Python fourni un module pour l'implementation:
https://docs.micropython.org/en/latest/library/ure.html
Une valeur flottante est défini comme suit :
- zéro ou plus d'espaces
- suivi par un "+" ou un "-"
- suivi par
- un "." suivi par au moins un digit
- ou
- au moins un digit suivi par zéro ou un "." suivi par zéro ou plus de digits
- suivi par zéro ou plus d'espaces
Essayer l'analyseur avec ces textes comme entrée:
Input |
ok or not ok |
5.3+4.7 |
ok |
5.3++4.7 |
not ok |
5..3 + 4.7 |
not ok |
.3+.7 |
ok |
5.3+4b7 |
not ok |
empty string |
not ok |
5.3+. |
not ok |
5.3+ |
not ok |
-1--1 |
ok |
--1--1 |
not ok |
Essayer aussi plusieurs espaces entre opérants et opérateur. Dans votre programme vérifier laquelle des deux nombres est plus grande et imprimer le résultat:
Exercice 3: Les conditions
Comme en exercice 2 débuter avec deux valeurs 5 et 7. Dans votre programme vérifier laquelle des deux nombres est plus grande et imprimer le résultat. Améliorer le programme en demandant l'utilisateur d'entrer les deux nombres. Vérifier que le deux nombres sont des valeurs flottantes valables et capturer d'éventuelles erreurs. Voilà une copie d'écran d'utilisation du programme :
Exercice 4 : La série Fibonacci
La série Fibonnacci est défini comme suite :
F(0) = 0; F(1) = 1
F(n) = F(n-1) + F(n-2)
- Calculer et imprimer les nombres Fibonacci jusqu'à F(n). Essayer le programme avec n=0, n=1, n=2, n=3, n=20
- Demander l'utilisateur d'entrer la valeur n
- Demander l'utilisateur la valeur F(n) maximum à calculer
Exercice 5 : Un peu de Mathematique
Écrire un script qui demande à l'utilisateur un angle en dégrées. Calculer le sinus de cet angle.
Exercice 6 : Les classes Python
Écrire une classe
MathSeries qui calcule des séries de nombres. La classe doit contenir des méthodes qui calcule les séries suivantes :
Rajouter ces séries à la classe et essayer. Écrire un script pour tester toutes les méthodes.
Pour avoir accès à la classe sur l'ESP32 on doit d'abord télécharger le module qui implémente la classe "MathSeries dans le système de fichier de l'ESP32. Créer un classeur
lib est transférer MathSeries dedans.
ampy mkdir /lib
ampy put mathSeries.py /lib/mathSeries.py
Maintenant on peut créer une instance de la classe MathSeries:
series = mathSeries.MathSeries()
Si on tourne le programme sur le PC vous pouvez aussi tracer les séries. Si vous ne savez pas comment tracer une fonction en Python, vous trouvez toutes les informations nécessaire ici :
https://matplotlib.org/3.2.1/index.html
--
Uli Raich - 2021-06-19
Comments