Exercices-test-py-01

AttentionPREALABLE

Créer un dossier sous pythonanywhere nommé TESTS.

Créer un fichier tpy01_ana_01.txt dans ce dossier qui contiendra l'analyse du problème demandée ci-dessous.

DONNEES - PROBLEME

La problématique sera simple : étudier une équation du second degré et en fournir les racines qu'elles soient réelles ou complexes ---> f(x)=0 avec f ( x ) = a x 2 + b x + c f( x ) = a cdot x ^{2} + b cdot x + c

Vous allez respecter 3 étapes :

1 -ANALYSE

2 -ALGORYTHME

3 - CODAGE ou PROGRAMMATION PYTHON.

Partie 1 : Analyse

J'énumère les faits ou ce que je connais :

Fait 1 : les racines sont réelles ou complexes.

Fait 2 : il peut y avoir 1 ou 2 racines --> le discriminant delta = b 2 4 a c delta = b^{2} - 4 cdot a cdot c selon qu'il soit égal à zéro, positif ou négatif permet de le savoir

Fait 3 : Racines complexes avec le caractère i ou j --> pour les afficher : ? ? ? ?

etc.

J'ai besoin, je connais, je ne connais pas :

pb1 : pour tester le signe de delta, j'ai besoin de savoir utiliser un test conditionnel avec if ou d'utiliser une structure case/switch ?

--------> savez vous faire un test avec if ? si oui, alors passez à votre pb suivant, sinon, vous pouvez chercher une autre solution ou chercher de l'aide, ou attendre d'avoir d'autres problèmes à résoudre.

pb2 : L'utilisateur va saisir a,b,c. Pour simplifier mes tests je vais affecter a,b et c dans mon programme avec des valeurs dont je connais le résultat.

---------> si je connais input, RAS, je n'écris rien.

pb3 : Je calcule delta

---------> RAS ? cela veut dire que je sais calculer une expression mathématique avec la fonction carré ou puissance ou puissance de 2.

pb4 : Je réalise le test sur delta pour afficher à l'utilisateur si les racines (1 ou 2) sont réelles (cas delta >=0) ou complexes (cas delta<0)

--------> à votre stade, je vous conseille plus que fortement de faire parfois votre traitement à la main quand c'est utile, ou encore dans le tableur avec une fonction SI avant de faire votre programme python.

exemple de code ci-dessous : je teste avec delta = 4 et delta=-2 pour être sûr que ce bout de code fonctionne

SimulationExemple d'un petit test ou essai .............

1
delta =-2
2
if delta<0:
3
   print("complexes")
4
else :
5
   print("réelle(s)")
6
7
8

Ensuite, il n'y a plus qu'à substituer delta=2 au code de calcul de delta en fonction de a,b et c.

RappelLa documentation, les recherches

Vos faits ou vos problèmes (pbs) n'ont pas forcément besoin d'être dans un ordre lié au programme final :

  • je dis juste ce que je sais (Fait), ce que je ne sais pas (Pb) 

  • je cherche, je réalise des petits tests simples et indépendants comme ci-dessus ou ci-dessous avant de me lancer dans la solution finale dont j'aurai aurai préalable préparé les étapes dans le code source.

Les fonctions carré ou racine carrée en python ne sont pas forcément connues de tous (module ou package math) : On cherche la documentation des fonctions mathématiques : Documentation python officielle

  • Sélectionnez la langue française, puis dans la zone de recherche, tapez math.

  • Parcourez la liste assez rapidement : vous verrez sqrt pour la racine carrée.

Dans pythonanywhere, les modules ou package disponibles : https://www.pythonanywhere.com/batteries_included/

1
from math import sqrt # j'utilise seulement la fonction sqrt
2
# ou from math import * si on veut utilise beaucoup de fonctions mathématiques.
3
a =2
4
y=sqrt(a)
5
z=a**2
6
print(y,z)
7

FIN DE L'ANALYSE, TESTS ET ESSAIS

UNE FOIS VOTRE ANALYSE TERMINEE, la rédiger très simplement dans le fichier /TESTS/tpy01_ana_01.txt et NE PLUS JAMAIS MODIFIER ce fichier.

Dupliquez le en tpy01_ana_02.txt si vous souhaitez le faire évoluer ou le corriger.

Dupliquez le à nouveau si vous souhaitez encore apporter des modifications.

Vous aurez besoin de faire une nouvelle version chaque fois que vous serez convaincus qu'en réalisant les traitements prévus, vous n'avez pas pensé à quelque chose d'important qui nécessite que vous fassiez des recherches ou envisagiez une autre approche. Cela est tout à fait normal de ne pas penser à tout avant de coder.

Partie 2 : Algorythme final : APRES VOTRE VOTRE ANALYSE, on donne la liste des étapes, phases essentielles

En priorité, je réalise les traitements suivants dans le programme final :

Demander a,b,c à l'utilisateur (pour les tests, prendre a =-2, b =-4, c=1) --> instruction input ou affectation de variables

Calculer delta --> remarque personnelle : (c'est cool, je connais l'opérateur puissance ** car j'ai cherché avant de coder)

etc ..... (à vous de faire)

Ce fichier s'appellera tpy_01_algo_01.txt, et respectera les mêmes règles que le fichier texte tpy_01_ana_xx (xx n° de version).

Partie 3 : Codage

Si les parties 1 et 2 sont efficaces, le codage est hyper court et je ne dois intervenir sur votre code que sur des difficultés qui ne sont pas liées à des points sur lesquels vous auriez du réfléchir avant.

Je vais juste citer un petit exemple :

Dans l'exercice 403, j'ai écrit les lignes

1
i=1
2
j=3
3
print(liste[i],liste[j])

Dans les 2 groupes sous skype, j'ai du répéter qu'une liste devait être déclarée par la méthode append ou avec liste={5, 2, 7]

Logiquement, vous auriez du chercher de la documentation sur déclaration d'une liste en python puisque vous obteniez une erreur "liste non déclarée" ou encore prendre cet exemple comme tel et l'appliquer non pas avec la liste nommée liste, mais avec votre application encours qui utilisait une liste nommée notes.

Le programme final comportera une version simple qui affiche les racines réelles : il sera nommé typ_01_REEL_01.py et une version avec les racines complexes nommé tpy_01_COMP_01.py

Une fois qu'un code fonctionne bien, on ne le modifie plus afin que sa date ne change JAMAIS, vous le dupliquez de la même façon que les fichiers présence, analyse, algo ....

Si toutefois, vous voulez faire un programme intermédiaire qui ne code que la partie étude du signe des solutions et affichage, appelez le tpy_01_DISCRIMINANT_01.py.