Bonjour, j'ai une question par rapport à une matrice
qui est sous cette forme :
ca donne quelque chose comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 res = [] for i in range(nb_lignes): liste = [] for j in range(nb_colonnes): liste.append(valeur_par_defaut) res.append(liste) return res
et le but de l'exercice est de faire la fonction ci dessous (décalage_colonne_en_haut) , c'est a dire de décaler une colonne en récupérant le nombre qui est enlevé et rajouter une nouvelle valeur (par ex: 9) en bas de la colonne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
Donc la matrice
en insérant une nouvelle valeur 9 a la colonne 1 doit donner ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
en retournant a la fin de la fonction la valeur qui a été enlevé ici c'est le nombre 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [[0, 4, 2], [3, 7, 5], [6, 9, 8]]
J'ai fait quelque chose comme ca mais ca ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 def decalage_colonne_en_haut(matrice, num_colonne, nouvelle_valeur=0): """ decale la colonne num_colonne d'une case vers le haut en insérant une nouvelle valeur pour remplacer la premiere case en bas de cette ligne :param matrice: la matrice considérée :param num_colonne: le numéro de la ligne à décaler :param nouvelle_valeur: la valeur à placer :return: la valeur qui a été ejectée lors du décalage """
Ou aussi j'ai fait ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 retire avec .pop le premiere element colonne et rajouter a la derniere ligne la new val a la colonne nb_retire = matrice[0].pop(num_colonne) matrice[-1].append(nouvelle_valeur) return nb_retire
JE vous remercie de votre aide, certaines personnes m'on parlé de boucle imbriquée mais si vous avez une solution plus simple je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for i in range(len(matrice)-1): nb_ret = matrice[0][num_colonne] matrice[i].pop(num_colonne) matrice[i].insert(num_colonne,matrice[i+1][num_colonne]) matrice[-1][num_colonne] = nouvelle_valeur return nb_ret
Merci
Partager