PYTHON.2 INFO FEUILLE 2

                        INFO   FEUILLE n°2   ALGORITHME avec Python           
 

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

     COURS

         Thème  : 

              •      float(a)/b      permet  avec le module decimal d'avoir  a / b comme 

                                          nombre décimal .

                                             Par exemple    

                                                float(11)/2        donne 5.5

                                          Avant le début du programme écrire:

                                                from decimal import*   pour appeler le module

              •    for i in range( 1,n+1):                        veut dire " pour i entier allant de 1 à n  "

                       b=int(input("Entrez un entier : "))       veut dire que l'on saisit un entier

                         if  Condition:               Cela veut dire    Si  Condition:

                                                              alors  .....

                              .......

                          else:    .....                cela veut dire   Sinon 

                                                                             ....

                        **    Le double astérisque   remplace ^

                                Ainsi:                    

                                  par exemple:           x2     s'écrit     x**2

                       *     Un seul astérix mis entre deux réels  est la croix x de la multiplication.

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

  EXERCICE1  :

                              Donner un algorithme qui donne

                                 la somme des n premiers entiers naturels:    1 + .......  + n
                                n étant un entier naturel non nul.      

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

   REPONSE:

                     Il y a au moins trois façon de procéder:

                   1. Avec une boucle

                                    for i in range( 1,n+1):

                   2. Avec la formule qui donne la somme des n  premiers termes

                        d'une suite arithmétique de premier terme 1 et de raison 1

                   3. Avec un" tant que" 

                                   while i <n+1:

     •Première méthode:

                 On peut envisager:

def test():
      n=input("jusqu'à quel rang voulez-vous calculer ? ")
      s=0
      for i in range(1,n+1):

      # attention range(1,n+1) donne i =1,2,3,...,n
          s=s+i
          print("1+...+"),(i),"=",(s)

      # Avec Python 2.5 ou 2.7 on peut mettre     print "1+...+",i,"=",s    sans parenthèses.

      # En alignant le p de print avec le f de for on obtient la dernière étape
----------------------------------------------------      

                On obtient par exemple:

>>> test()
jusqu'à quel rang voulez-vous calculer ? 10
1+...+ 1 = 1
1+...+ 2 = 3
1+...+ 3 = 6
1+...+ 4 = 10
1+...+ 5 = 15
1+...+ 6 = 21
1+...+ 7 = 28
1+...+ 8 = 36
1+...+ 9 = 45
1+...+ 10 = 55
>>>

         •Seconde méthode avec une formule:

                   Soit n un entier naturel non nul:

                  e1.png 

   Le problème c'est que Python 2.7 ne reconnait pas 

   la division décimale ordinaire

          Il faut donc faire appel à un module complémentaire: décimal

from decimal import* 
def somme():
       n=input("Donner le dernier entier non nul de la somme : n = ")
       s=(float(1+n)/2)*n
       print s

Cela donne  par exemple:

>>> somme()
Donner le dernier entier non nul de la somme : n = 10
55.0
>>>

          • Troisième méthode  en utilisant  while au lieu de for

def SOMME():
      n=input("Donner le dernier entier non nul de la somme: n = ")
      S=0
      i = 0
      while i<n + 1:
            S=S+i
            print  "0+...+" , i ,"=",S

            i=i+1

           # while oblige à initialiser i en mettant avant i = 0

           # De plus il faut le compteur i = i + 1

          # avec une boucle for il suffit d'initialiser  S en mettant S = 0 avant

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

                       On obtient par exemple:

>>> SOMME()
Donner le dernier entier non nul de la somme: n = 7
0+...+ 1 = 1
0+...+ 2 = 3
0+...+ 3 = 6
0+...+ 4 = 10
0+...+ 5 = 15
0+...+ 6 = 21
0+...+ 7 = 28

-----------------------------------------------------------------------------------------------------------------
   EXERCICE 2 :

                       Carrés successifs
             Le but est de calculer les p carrés successifs des carrés d'un

               entier naturel n :         n2  ,  ( n)2   ,  ( ( n2 )2 )2    , ... etc     

              c-à-d

                            n2   , n2 × 2  ,   n2 × 2 × 2   ,   ...... ,    carredecarre.png   

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

    REPONSE:

 Première recherche:

Obtenir la liste des carrés des entiers de proche en proche.

         le"carré de n",  puis le carré du"carré de n" , ainsi de suite...

def test():
      n=input("Entrez un nombre entier n: n =  ")

      p=input("Entrez le nombre de carrés successifs à calculer : p =  ")
     for x in range(1,p+1):

   #attention for x in range(1,p+1) donne  x =1,3,...,p
          n=n**2
          print " "
        print(n)   

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

  Pour le faire tourner .

>>> test()
Entrez un nombre entier n: n =  3
Entrez le nombre de carrés successifs à calculer : p =  5
 
9
 
81
 
6561
 
43046721
 
1853020188851841
>>>

 REMARQUE:  Autre interprétation

   Pour avoir la SOMME des termes  de la forme 2^(2k)  de k =1  à  k =p

  Voici un algorithme:

def somcarre():
       n=input("Entrer un entier naturel non nul  ")
       p=input("Entrer un entier naturel non nul ")
       S=0
       for k in range(1,p+1):
             S=S+(n**(2*k))
       print (" la somme"),n,"^(2*1)+ ...+ ",n,"^(2*",p,")"," =",S

Par exemple:

>>> somcarre()
Entrer un entier naturel non nul  2
Entrer un entier naturel non nul  3
 la somme 2 ^(2*1)+ ...+  2 ^(2* 3 )  = 84
>>>

-----------------------------------------------------------------------------------------------------------
   EXERCICE 3 :    

         Diviseurs d'un entier
         Soit n un entier naturel non nul.

        Le but est de faire afficher tous les diviseurs de n.

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

      REPONSE:

def diw(x):
      n=input("Entrez un nombre entier naturel non nul : ")
      for x in range(1,n+1):
      if n%x==0:

      # n%x  est le reste  de la division de n par x
      # Si le reste  de la division de n par x est 0 alors x divise n

         print( "il y a comme diviseur: " ),(x)

       # On peut suprimer les parenthèses en disant,   print "il y a comme diviseur: " ,x
      # Attention après deux points se décaler de trois blanc à la ligne

  Pour le faire tourner:

>>> diw(1)
Entrez un nombre entier naturel non nul : 15
il y a comme diviseur:  1
il y a comme diviseur:  3
il y a comme diviseur:  5
il y a comme diviseur:  15
>>>

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