CI n°1 (#2) réviser et bonnes pratiques

Suite du CI n°1 (#1)

L1S2 (maths) – Algo prog – UFR Maths-Info Strasbourg


Temps de lecture / écoute estimé : 30 minutes


🙂 Rassurez-vous ! Ça va bien se passer ! 💡 Si vous êtes assidu.e.s et si vous vous investissez en TP !

  • Le support de cours est disponible sur moodle.

  • Salon de discussion sur ce CI avec l’application discord ce lundi à partir de 14h30. Explications sur moodle.


On suppose que vous ayez « joué le jeu » et essayé de répondre à la consigne donnée précédemment :

On veut implémenter en python un petit programme de résolution des équations du second degré.

En entrée on attend donc a \text{, }b \text{ et } c trois réels avec a \neq 0 et le programme qu’on veut implémenter doit renvoyer l’unique solution ou un tuple de solutions réelles de (E):ax^2+bx+c=0 ou indiquer le cas échéant (dans un premier temps) que (E) n’admet pas de solutions réelles.

cm 2020-03-23 CI1-08

En cliquant sur « lire la suite » en fin de cet article, vous pourrez copier/coller le code que je présente ici dans cette vidéo.

😳 Excusez les hésitations et autres balbutiements ! 🙄

Je ne suis pas un « influenceur » youtube et j’essaie de faire au mieux en cette période compliquée !

cm 2020-03-23 CI1-10

RESTART: /home/.../UFR Maths/2020-L1S2-AlgoProg2-Python'...
Printemps/.../cm 2020-03-23 ex cours delta et racines.py

Ce programme propose de resoudre dans IR ax^2 + bx + c = 0

Saisissez a (non nul) : 1
Saisissez b : 1
Saisissez c : 1
Solution(s) eventuelle(s) :
	 pas de solution reelle !
>>> help(racines)
Help on function racines in module __main__:

racines(a, b, c)
    resolution de l'equation

    attend a, b, c , a non nul
    teste suivant la valeur du discriminant
    s'il y a des racines
    et les renvoie alors

>>> help(discriminant)
Help on function discriminant in module __main__:

discriminant(a, b, c)
    attend trois reels a, b, c, calcule le discriminant et le renvoie

>>>

cm 2020-03-23 CI1-11

❗ ➡ Attention : le soucis de documentation sera évalué lors des TPs et des contrôles.

cm 2020-03-23 CI1-12cm 2020-03-23 CI1-13cm 2020-03-23 CI1-14cm 2020-03-23 CI1-15cm 2020-03-23 CI1-16cm 2020-03-23 CI1-17

🙂 Rassurez-vous ! Ça va bien se passer ! 💡 Si vous êtes assidu.e.s et si vous vous investissez en TP !

  • Le support de cours est disponible sur moodle.
  • Salon de discussion sur ce CI avec l’application discord ce lundi à partir de 14h30. Explications sur moodle.
  • TPs ce jeudi via discord
    • groupes 5a et 5b à 13h30,
    • groupes 6a et 6b à 15h30.
    • Connectez-vous dans le bon salon de discussion, correspondant à votre groupe de TP.

Le code présenté aujourd’hui :

from math import sqrt

def discriminant(a, b, c):
    """attend trois reels a, b, c, calcule le discriminant et le renvoie"""

    return b ** 2 - 4 * a * c

def racines(a, b, c):
    """ resolution de l'equation

        attend a, b, c , a non nul
        teste suivant la valeur du discriminant
        s'il y a des racines
        et les renvoie alors
    """
    delta = discriminant(a, b, c)  # on stocke la valeur du discriminant
    if delta < 0:  # si negatif
        return "pas de solution reelle !"
    elif delta == 0:  # si nul
        return -b / (2 * a)
    else:  # dernier cas delta strictement positif
        return (-b - sqrt(delta)) / (2 * a), (-b + sqrt(delta)) / (2 * a)

def saisie_reel(texte):
    """saisie d'un reel gerant les erreurs de saisie"""

    while True:  # boucle "infinie", on n'en sort qu'avec break
        nbre = input(texte)
        # On tente la conversion en flottant
        try:
            nbre = float(nbre)
        except ValueError:  # si la conversion n'a pas fonctionne
            print("Vous n'avez pas saisi de nombre")
            continue  # retour dans la boucle
        break  # ok : sortie de boucle
    return nbre

def saisie_reel_non_nul(texte):
    """saisie d'un reel non nul gerant les erreurs de saisie"""

    nbre = 0

    while nbre == 0:
        nbre = saisie_reel(texte)

    return nbre

def equation_degre_2():
    """ resolution de ax^2 + bx + c = 0

    pour interagir avec l'utilisateur
    saisir les coefficients de ax^2 + bx + c = 0
    et la resoudre dans IR quand c'est possible
    """

    print("Ce programme propose de resoudre dans IR ax^2 + bx + c = 0\n")

    # saisie de a
    a = saisie_reel_non_nul("Saisissez a (non nul) : ")

    # b et c peuvent etre nuls
    b = saisie_reel("Saisissez b : ")
    c = saisie_reel("Saisissez c : ")

    print("Solution(s) eventuelle(s) :\n\t", racines(a, b, c))

equation_degre_2()