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:
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.
---------------------------------------------------------------------------