PYTHON 2. FEUILLE n° 9 TER

                                    PYTHON 2. FEUILLE n° 9  TER     ALGO  

            COURS

                   THEME:

                  • Soit L une liste.

                          len(L) est sa longueur c-à-d  le nombre de ses termes

                  • Obtenir la transposée d'une matrice carrée

                              Soit la matrice A suivante:

                                    matricecarreea.png

                                   A est la liste de liste suivante:

                                    A =[ [ a , b , c ] , [ d , e , f ] , [ g , h , i ] ]

                   Sa transposée tA est la matrice :

                                         transposee-dea-1.png

                    Les lignes de A sont devenues les colonnes de  tA.

                                   tA = [ [ a , b , g ] , [ b , e , h ] , [ c , f , i ]

               • Pour faire afficher  verticalement la matrice

                                 A =[ [ a , b , c ] , [ d , e , f ] , [ g , h , i ] ]

                On considère les deux lignes suivantes:

                                 for line in A:

                                       print  line

              •  Soit L une liste non vide.

                                 L[ - 1 ] donne son dernier terme

                                 L[ - 2 ]  s'il existe donne son avant dernier terme  

               Par exemple :  Soit L = [ 1 , 2 , 7]

                                       print L[ - 1 ] donne 7

           • Création d'une liste de trois listes vides:

             def  exemple():

                     M=[]

                                               # M=[] veut dire que  M est la liste vide

                    for i in range(3):

                          M.append([])

                                                 # M.append( [] ) ajoute [ ] à la fin de la liste M

                    print M

                              permet d'obtenir que la liste M devienne la liste [ [ ],[ ],[ ] ]

             •Utilisation de :

                           for j in xrange(i,9,3):

             Cela veut dire que j va varier à partir de l'entier i de 3 en 3 jusqu'à 9 exclus

                   Par exemple :                     

               from random import*   

               def essai():

                      for j in xrange(1,9,3):

                            print j

                   affiche 

                           1

                           1 + 3

                           1 + 3 + 3  

                     c-à-d

                            1

                            4

                            7

                 Ce sont les premiers termes d'une suite arithmétique de raison 3

                 et de premier terme 1 sans atteindre 9.

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

    EXERCICE 1

             Que donne le script suivant? 

def tem():

       L=[1,2,3,4,5,6,7,8,9]

      print  L[-1]

      print  L[len(L)-1]

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

            REPONSE:

              Il donne deux fois le dernier terme de la liste L

               c-à-d:

>>>term()

 9

 9

>>>

             En effet :  

                    L[-1] donne le dernier terme de la liste L

                    L[len(L)-1] donne le terme d'indice len(L)-1 c-à-d

                    le dernier terme de la liste L

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

          EXERCICE 2

          Que donne le script suivant ?

from random import*

def changer():

    for j in xrange(0,9,3):

        print

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

        REPONSE:

  On obtient:

>>> changer()

0

3

6

>>>

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

        EXERCICE 3

   Que donne le script suivant ?

from random import*         

def resume():

      for i in range(3):

            for j in xrange(i,9,3):

                  print j

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

   REPONSE:

              On obtient :

>>> resume()
0
3
6
1
4
7
2
5
8
>>>

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

               EXERCICE 4

          Que donne le script suivant ?

from random import*

def trans():

       L=[1,2,3,4,5,6,7,8,9]  

       for j in xrange(2,9,3):     

             print L[j]

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

          REPONSE:     

                      j qui prend les valeurs 2 , 2 + 3 , 2 + 3 + 3 

        c-à-d     j prend les valeur 2 ; 5 ; 8

    Donc :  

                 Le L[j] va être L[2] puis L[5] puis L[8]

       c-à-d,  d'après la liste L cela donne 3 puis 6 puis 9

>>> trans()
3
6
9
>>>

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

            EXERCICE 5

 Que donne le script suivant ?

from random import*   

def bilan():

      L=[1,2,3,4,5,6,7,8,9]

      M=[]

      for i in range(3):

           M.append([])

           for j in xrange(i,9,3):

                M[-1].append(L[j])

      print M

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

  REPONSE:

            On obtient:

>>> bilan()
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>>

      Explication:

           M est d'bord [ ]

         Puis devient [  [ ]  ]

         Donc M[ - 1 ] est [ ]

         Alors  L [0 ] , L [0 +3 ] , L[ 0 + 3 + 3 ]

          sont mis successivement dans M [ - 1 ] 

          A ce stade M =[   [  L [0 ] , L [3 ] , L[ 6 ] ]  ] = [  [ 1 , 4 , 7 ] ]

        Puis  M = [ [ 1 , 4 , 7 ]  , [ ] ]

         Donc  M[ - 1] est  [ ] 

          Alors  L [1 ] , L [1 +3 ] , L[ 1 + 3 + 3 ]

          sont mis successivement dans M [ - 1 ] 

          A ce stade   M = [ [ 1 , 4 , 7 ], [  L [1 ] , L [4 ] , L[ 7 ] ] ]

             c-à-d       M = [ [ 1 , 4 , 7 ], [  2 , 5, 8 ] ]

          Alors    M =  [ [ 1 , 4 , 7 ], [  2 , 5, 8 ], [ ]  ]

             M[ - 1] est [ ]      

            Alors  L [2 ] , L [2 +3 ] , L[ 2 + 3 + 3 ]

           sont mis successivement dans M [ - 1 ] 

           On obtient donc:

                 M =  [ [ 1 , 4 , 7 ], [  2 , 5, 8 ], [ L [2 ] , L [5 ] , L[ 8 ] ]  ]

             c-à-d   

             M =  [ [ 1 , 4 , 7 ], [  2 , 5, 8 ], [ 3 , 6 , 9 ]  ]

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

          EXERCICE 6 

               Que donne le script suivant ?

from random import*     

def  res():

       L=[1,2,3,4,5,6,7,8,9]

       print L

      print " "

     M=[[L[j]for j in xrange(i,9,3)]for i in xrange(0,3)]

     for line in M:

           print line   

 

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

      REPONSE:

     On obtient la même liste M que dans l'exercice précédent

       mais avec un script plus court et M présenté

      avec une disposition verticale.     

>>>res ()
[[1, 4, 7]

 [2, 5, 8]

[3, 6, 9]]

>>>

              On peut remarquer que c'est la transposée de la 

             matrice [ [ 1 , 2 , 3] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ]

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

    EXERCICE 7

           En déduire un moyen d'obtenir la transposée de la matrice

           A=[[1,2,3],[4,5,6],[7,8,9]]    de type ( 3 ; 3 ).

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

     REPONSE:

   On peut envisager:

from random import*

def transposee():

       A=[[1,2,3],[4,5,6],[7,8,9]]

       print  " Soit la matrice A suivante :"

       for line in A:

            print line

                                      # Pour avoir A verticalement

      L=[]

      M=[]

     for i in range(3):

          for j in range(3):

            L.append(A[i][j])

                                  # cela permet d'avoir L=[1,2,3,4,5,6,7,8,9]

                                 # On se ramène au début de l'exercice précédent

                                # On peut donc reprendre le même texte

     print " "

     for i in range(3):

           M.append([])

          for j in xrange(i,9,3):

                M[-1].append(L[j])

     print " La transposée de la matrice  A est "

     for line in M:

           print line

                         On obtient :

>>> transposee()
Soit la matrice A suivante :
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

La transposée de la matrice A est
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
>>>

                  Généralisable à d'autres matrices de type ( 3  ; 3 )

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

   EXERCICE 8

  Faire un programme qui à partir d'une liste de trois noms chacun

  suivi de deux notes présente une matrice avec les trois noms

 sur la première ligne et les deux notes en dessous.

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

      REPONSE:

              On peut considérer :

from random import*

def tableau():

      print  " Les notes de LISE , ABEL et GEO sont les suivantes:"

      L=["LISE",11,8,"ABEL",16,17,"GEO",14,9]

      # La liste est une bibliothèque

      print L

      print " "

      M=[[L[j]for j in xrange(i,9,3)]for i in xrange(0,3)]

      for line in M:

            print line    

                   On obtient :

>>> tableau()
Les notes de LISE , ABEL et GEO sont les suivantes:
['LISE', 11, 8, 'ABEL', 16, 17, 'GEO', 14, 9]

['LISE', 'ABEL', 'GEO']
[11, 16, 14]
[8, 17, 9]
>>>