INFO TEST BTS1 1789

                    INFO    TEST                              25 nov. 2015     BTS1

             PREMIER TRAVAIL

            Voici un algorithme écrit en Python 2.7  :

from random import*

def  bonjour():

        n=int(input("Entrez n "))

        if n==0:

              print  1

        else:
               a=1
               for i in range(1,n+1):
                     a=i*a
               print  a    

         QUESTIONS :

       1. Pourquoi a-t-on mis int devant input?          Pour obtenir un entier, même celui qui saisit donne un décimal

        2. Pouvait-on mettre raw_input  au lieu de input ?  Non car on veut saisir une valeur numérique, pas une chaîne.

        3. Quel est le but de cet algorithme ?                                        Il donne  n!

        4. Pour n = 4 qu'obtient-on avec cet algorithme  ?      On obtient 24    car     1 x 2 x 3 x 4 = 24 = 4!

        5. Pourquoi a-t-on mis a = 1 ?                        Pour initialiser a.  C'est le premier facteur de la factorielle               

        6. Quelles sont les valeurs prises par i ?            i prend les valeurs entières de 1 à n

        7. Pourquoi mettons if n == 0 ?                     Pour envisager le cas où n serait nul

        8. Si on déplace le dernier print à la verticale de  a=i*a          

          qu'est-ce que cela change ? La construction  progressive de n! apparaîtrait . Pas seulement le résultat final.

        9. Modifier l'algorithme pour qu'il utilise une boucle while au lieu d'une boucle for.  

                On considère:

from random import*

def  bonjour():

        n=int(input("Entrez n "))

        if n==0:

              print  1

        else:
               a=1
               i=1

               while  i <=n :
                       a=i*a

                       i = i + 1        
               print  a           

      10. a. Que signifie  a=i*a ?                       a est remplacé par le produit a x i

            b. Pourquoi a-t-on mis  from random import* au début ?         Pour appeler le module random

           c. Prolonger le programme pour qu'il dise si n est pair ou impair.

                 On rajoute:

            if n%2==0:

                  print  n , "est pair"

            else:

                   print  n, " est impair" 

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

            SECOND TRAVAIL

       1 .   Écrire un programme en Python 2 qui fait deviner le juste prix  entier d'un article

            ( que l'ordinateur décide de façon aléatoire )  qui vaut entre 1 € et 100€.

from random import *

def dev():                    
       a=randint(0,100)                     
       b=int(input("Entrez un entier pour le prix : "))
       while b!=a:
               if b>a:
                     print "votre prix  est trop grand."
               else:
                    print  "votre prix est trop petit."
               b=int(input("Entrez un autre prix : "))
       print "votre prix  est le bon."

        2. Un candidat a écrit l'algo suivant et se demande ce qu'il va obtenir:

def essai():

       a = 0

       b = 1

       while b < 10:

               print b

               a=b

               b = a + b

          Pouvez-vous l'aider à savoir?                 Il obtient: 

                                                                                     b=1

                                                                                     b=2

                                                                                     b= 4

                                                                                     b = 8         

         Attention  b <   10

       Il est hors de question d'obtenir 16

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