PYTHON.2. INFO FEUILLE n° 21 BTS1

                          INFO PYTHON 2    FEUILLE n°21     BTS1   Janvier 2013 

                

    Thème:

                 • Matrice triangulaire de Pascal. 

                 •    A=[[0 for x in range(n)]for x in range(n)]  

                      donne une matrice carrée d'ordre n ( n dans IN* ) ne contenant que des 0 .  

                •    Si A est une matrice de type ( n , n) avec n dans IN* alors

                       for i in range(n):
                            A[i][0]=1   

                      remplace la première colonne de A par des 1. Ces 1 sont dans la colonne d'indice 0

                     et dans les lignes d'indices i variant de 0  à n-1. Ce sont les termes de rang ( i + 1; 1) en maths

                     quand  i variant de 0  à n-1.

                 •  Si A est une matrice ( donc une liste de listes de même longueur )

                       for line in A:
                            print line

                      affîche  verticalement la matrice A

                  Si A est une matrice carrée d'ordre 7  

                       for i in range(1,7):
                            for j in range(1,7):
                                 A[i][j]=A[i-1][j-1]+A[i-1][j]  

                     change le terme de rang( i + 1 ; j + 1) en maths en la somme du terme

                   de rang ( i ; j ) avec le terme de rang ( i ; j + 1 )  pour i variant de 1 à 6 et

                   j variant de 1 à 6. La première colonne est donc épargnée.

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

      EXERCICE 1

                Faire un script qui affîche la matrice carrée A d'ordre 7 suivante:      

             
 
   triangle-depascal.png     triangle-depascal2.png

           On remarquera que la première colonne ne comporte que des 1

            Chacun des autres termes est obtenu en considerant sur la ligne au dessus

            "la somme du terme au dessus avec celui à sa gauche." 

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

     REPONSE:       

             On peut considérer:

from random import*
def matpascal():
      A=[[0 for x in range(7)]for x in range(7)]

      print " Les 7 premières lignes du triangle de Pascal sont: "
      for i in range(7):
           A[i][0]=1
      for i in range(1,7):
           for j in range(1,7):
                A[i][j]=A[i-1][j-1]+A[i-1][j]
      for line in A:
           print line

                      On obtient :

>>> matpascal()
 Les 7 premières lignes du triangle de Pascal sont:
[1, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0]
[1, 2, 1, 0, 0, 0, 0]
[1, 3, 3, 1, 0, 0, 0]
[1, 4, 6, 4, 1, 0, 0]
[1, 5, 10, 10, 5, 1, 0]
[1, 6, 15, 20, 15, 6, 1]
>>>

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

         EXERCICE 2

            Même question mais cette fois en demandant la saisie de l'ordre n ( n dans IN* )

             de la matrice A.

           ( En faisant abstraction des zéros on a le triangle de Pascal.)

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

    REPONSE:

             On peut considérer:

from random import*
def trpasc():
      n=input("Combien de lignes pour le triangle de Pascal ? ")
      A=[[0 for x in range(n)]for x in range(n)]
      for i in range(n):
           A[i][0]=1
      for i in range(1,n):
           for j in range(1,n):
                A[i][j]=A[i-1][j-1]+A[i-1][j]
      for line in A:
           print line

                On obtient par exemple:

>>> trpasc()
Combien de lignes pour le triangle de Pascal ? 5
[1, 0, 0, 0, 0]
[1, 1, 0, 0, 0]
[1, 2, 1, 0, 0]
[1, 3, 3, 1, 0]
[1, 4, 6, 4, 1]
>>> 

                 ou encore par exemple 

>>> trpasc()
Combien de lignes pour le triangle de Pascal ?11
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0]
[1, 4, 6, 4, 1, 0, 0, 0, 0, 0, 0]
[1, 5, 10, 10, 5, 1, 0, 0, 0, 0, 0]
[1, 6, 15, 20, 15, 6, 1, 0, 0, 0, 0]
[1, 7, 21, 35, 35, 21, 7, 1, 0, 0, 0]
[1, 8, 28, 56, 70, 56, 28, 8, 1, 0, 0]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1, 0]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]

>>>

                 On remarque que les colonnes ne sont plus alignées

                 car il apparaît des entiers à deux puis trois ... etc ...chiffres

                 pour lesquels il plus de place.

                                     

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