PYTHON 2 INFO FEUILLE n° 12 D'EXERCICES

                              INFO   FEUILLE  n° 12     BTS SIO 1        Avril-Mai 2012

     Thème:

              Révisions et synthèse de connaissances.

             Programme  ayant un " programme principal " faisant appel à des scripts ou fonctions.

             (  Les entrées de données par l'utilisateur se font en dehors des scripts ou fonctions ) 

            Cela permet d'avoir un programme multitâches plus complexe.

----------------------------------------------------------------------------------------------------------------------------

    EXERCICE 1

       Rédiger un  programme comportant les conditions suivantes:

     •  Le "programme principal" demande à l'utilisateur d'entrer les coefficients  a , b, c 

        ( a réel non nul , b et c deux réels), d'une équation du second

        degré  a x2 + b x + c = 0.

      •  Puis le" programme principal" fait appel ensuite à des scripts pour

         retourner le discriminant, puis pour la discussion sur son signe et qui retourne les

         solutions éventuelles ou l'absence de solution.

       • Enfin le "programme principal" demande  l'affichage de la conclusion.

   -----------------------------------------------------------------------------------------------------------------

   Réponse:

def scd(a,b,c):

       return b**2-4*a*c

def sig(a,b,c):

       if scd(a,b,c)<0:

           print (" Aucune solution")

       elif scd(a,b,c)==0:

           print(" Il y a une racine double")

           return -b/(2*a)

       else:

           print(" Il y a deux racines distinctes")

           return [( - b + scd(a,b,c)**0.5 )/ ( 2*a ), ( - b - scd(a,b,c)**0.5 )/ (2*a )]

     #####################

  # PROGRAMME PRINCIPAL #

    ######################

a=input(" Donner un réel non nul a:  a = ")

b=input(" Donner un réel b              :  b = ")

c=input(" Donner un réel c               :  c = ")

print sig(a,b,c)

input(" Appuyer sur Entrée pour arrêter")

-----------------

  Cela donne par exemple:

>>>
Donner un réel non nul a: a = 1
Donner un réel b              : b = 2
Donner un réel c              : c = 1
Il y a une racine double
-1
Appuyer sur Entrée pour arrêter

Ou encore par exemple:

>>>
Donner un réel non nul a: a = 1
Donner un réel b : b = 2
Donner un réel c : c = 2
Aucune solution
None
Appuyer sur Entrée pour arrêter

OU encore par exemple:

>>>
Donner un réel non nul a: a = 1
Donner un réel b : b = 3
Donner un réel c : c = 1
Deux racines distinctes
[-0.3819660112501051, -2.6180339887498949]
Appuyer sur Entrée pour arrêter

OU encore avec des cœfficients décimaux:

>>>
Donner un réel non nul a: a = 1.5
Donner un réel b : b = 2.1
Donner un réel c : c = -1.4
Il y a deux racines distinctes
[0.49303534454488523, -1.8930353445448853]
Appuyer sur Entrée pour arrêter

----------------------------------------------------------------------------------------------------------------------

 Remarque:

    Vous pouvez imaginer de modifier le programme pour 

   retourner une erreur quand l'utilisateur se trompe en mettant 

   a = 0 malgré le texte écrit.

------------------------------------------------------------------------------------------------------------------

     EXERCICE 2

        Rédiger un programme comportant les conditions suivantes:

      • Le "programme principal" demande à l'utilisateur d'entrer  un réel  x et un entier 

         naturel n  , non simultanément nuls.

      •  Puis le" programme principal" fait appel ensuite à un script pour

         discuter les cas n==0  ou non  avec une boucle if .....else

         retourne x .

     •   Enfin le "programme principal" demande l'affichage de xn  .

-------------------------------------------------------------------------------------------------------------------

  Réponse:

from __future__ import generators

def puiss(x,n):

# retourne x^n

# x est un nombre entier non nul

# n est un entier naturel

#convention quand x<>0: x ^ 0 = 1     

       if n == 0:

          return 1

       else:

          return x*puiss(x, n-1)

   #####################

#  PROGRAMME PRINCIPAL  #

   ######################

x = int(input("Entrez un nombre entier NON NUL  x : x = "))

n = int(input("Entrez un entier naturel n                   : n =  "))

print x, "^" ,n, "=", puiss(x,n)

input("Appuyer sur Entrée pour quitter le programme.")

On obtient par exemple:

>>>
Entrez un nombre entier NON NUL x : x = 3
Entrez un entier naturel n                   : n = 0
3 ^ 0 = 1
Appuyer sur Entrée pour quitter le programme.

 Ou encore par exemple:

>>>

Entrez un nombre entier NON NUL x : x = 2

Entrez un entier naturel n                   : n = 3
2 ^ 3 = 8
Appuyer sur Entrée pour quitter le programme.

 -------------------------------------------------------------------------------------------------------------------

    EXERCICE 3   

        Rédiger un programme comportant les conditions suivantes:

      • Le "programme principal" demande à l'utilisateur d'entrer  un réel  x et un entier 

         naturel n  , non simultanément nuls.

      •  Puis le " programme principal" fait appel ensuite à un script pour

         discuter les cas n==0 , puis  n>0 avec l'utilisation de while 

         retourne x .

     •   Enfin le "programme principal" demande l'affichage de xn  .

------------------------------------------------------------------------------------------------------------------- 

 Réponse:

def ps(x,n):

# retourne x^n

# x est un nombre entier non nul

# n est un entier naturel

#convention quand x<>0 c-à-d x != 0: x ^ 0 = 1     

       while n > 0:

            return x*ps(x, n-1)

       return 1

    #####################

#  PROGRAMME PRINCIPAL  #

    ######################

x = input("Entrez un nombre entier NON NUL x : x =  ")

n = int(input("Entrez un entier naturel n            : n =  "))

print x, "^" ,n, "=", ps(x,n)

input("Appuyer sur Entrée pour quitter le programme.")

On obtient par exemple:

>>>
Entrez un nombre entier NON NUL x : x = 2
Entrez un entier naturel n : n = 0
2 ^ 0 = 1
Appuyer sur Entrée pour quitter le programme.

OU encore par exemple:

>>>

Entrez un nombre entier NON NUL x : x = 2

Entrez un entier naturel n : n = 3
2 ^ 3 = 8
Appuyer sur Entrée pour quitter le programme.

OU encore par exemple: 

>>>

Entrez un nombre entier NON NUL x : x = 1.5 

Entrez un entier naturel n : n = 3
1.5 ^ 3  =  3.375
Appuyer sur Entrée pour quitter le programme.

LE PROGRAMME FONCTIONNE AUSSI POUR X NOMBRE DECIMAL.

----------------------------------------------------------------------------------------------------------------  

      EXERCICE  4  

        Rédiger un programme comportant les conditions suivantes: 

   • Le "programme principal" demande à l'utilisateur d'entrer  un réel  x et un entier 

         naturel n  , non simultanément nuls.

      •  Puis le " programme principal" fait appel ensuite à un script pour

         retourner  pow( x , n) .

     •   Enfin le "programme principal" demande l'affichage de xn    .

---------------------------------------------------------------------------------------------------------------------

  Réponse:
              
def pu(x,n):

      return pow(x,n)

#  PROGRAMME PRINCIPAL  #

   #####################"

x = input("Entrez un nombre entier NON NUL  x :  x = ")

n = input("Entrez un entier naturel n                    : n = ")

# On peut mettre int(input("Entrez un entier naturel n        : n = "))

# Si l'on veut absolument que n soit un entier

print x, "^" ,n, "=", pu(x,n)

# On peut mettre print( x, "^" ,n, "=", pu(x,n))

# Mais il y aura des apostrophes

input("Appuyer sur Entrée pour quitter le programme.")

On obtient par exemple :

>>>
Entrez un nombre entier non nul x : x = 2
Entrez un entier naturel n                : n = 0
2 ^ 0 = 1
Appuyer sur Entrée pour quitter le programme.

On obtient par exemple :

Entrez un nombre entier non nul x : x = 2
Entrez un entier naturel n                : n = 3
2 ^ 3 = 8
Appuyer sur Entrée pour quitter le programme.

LE PROGRAME FONCTIONNE AVEC x NOMBRE DECIMAL

ET MEME AVEC L'EXPOSANT NOMBRE DECIMAL.

-------------------------------------------------------------------------------------------------------

  Remarque:

    Vous pouvez imaginer de modifier lestrois  programmes

    précédents pour retourner une erreur quand l'utilisateur

    se trompe en mettant x = 0 et n = 0 malgré le des questions posées.

   En effet ici le programme donnerait 1 ce qui est une erreur.

---------------------------------------------------------------------------------------------------