Parcourir la colonne [Résolu]

Signaler
-
 Azn -
Bonjour,

Je suis un débutant qui tente de faire une exercice en python.

Créez :
 Une méthode affichageMat, qui prend en paramètre une matrice et l’affiche ligne, par ligne.
 Une méthode trier, qui prend en paramètre une matrice et la trie en utilisant un tri croissant sur toutes les colonnes de la matrice. (chaque colonne doivent être trier en décroissant)
 Un programme principal, qui lit (demande) d’abord la taille d’une matrice (0<taille,<11), puis génère aléatoirement des nombres entiers dans cette matrice carrée. Tester ensuite dans ce programme principal les deux méthodes précédentes, en affichant la matrice avant et après le tri. On utilisera qu’une matrice dans le programme principal.

Ainsi, si vous choisissez la taille 5, par exemple et que la matrice générée est comme suit :

5 15 34 21 11
03 11 75 3 56
19 30 24 95 99
10 24 43 45 65
45 87 18 78 74

Le programme affichera :





Voici la matrice avant le tri :

05 15 34 21 11
03 11 75 03 56
19 30 24 95 99
10 24 43 45 65
45 87 18 78 74

Voici la matrice après le tri :

45 87 75 95 99
19 30 43 78 74
10 24 34 45 65
05 15 24 21 56
03 11 18 03 11


voici mon code

# création de deux matrices à l'aide d'input
affichageMat = int(input("Entrez la taille que vous voulez"))
if affichageMat <= 0:
    print("Le chiffre doit être supérieure à 0")
elif affichageMat > 11:
    print("Le chiffre doit être inférieur à 11")
else:
    import random

    A = []
    # pour créer la matrice d'appartir ce que l'utilisateur saisit
    for i in range(affichageMat):
        a = []
        for j in range(affichageMat):
            a.append(int(random.randint(0, 50)))
        A.append(a)

    print("Voici la matrice avant le tri :")

    # pour ajouter des valeurs aléatoires
    for i in range(affichageMat):
        for j in range(affichageMat):
            print(A[i][j], end=" ")
        print()

print("Voici la matrice après le tri :")



J'ai réussi à créer un input dans laquelle un utilisateur peut entrer un chiffre entre 0 et 11 et qui génère une matrice carrée selon la taille que l'utilisateur saisit. Le problème que j'ai est que je ne sais pas comment mettre en ordre décroissant chaque colonne et ensuite afficher la matrice avec le tri.

Merci en avance pour l'aide

2 réponses

Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
59
Bonjour,
Pour manipuler les matrices il faut utiliser la bibliothèque NumPy.
Si numpy n'est pas installé, en mode administrateur dans une console python passez la commande suivante:
python -m pip install numpy


Exemple de code
# -*- coding: UTF8 -*-
import numpy as np

valeurs = [5, 15, 34, 21, 11,
3, 11, 75, 3, 56,
19, 30, 24, 95, 99,
10, 24, 43, 45, 65,
45, 87, 18, 78, 74]

#Création du tableau en colonnes 5X5
mat = np.array(valeurs).reshape(5,5)
print(mat)

#Lire la colonne 0
col0 = mat[:,0]
print("\nColonne 0\n",col0)

#Tri ascendant par colonnes
mat_tri=np.sort(mat,axis=0) #Axe du tri 0=colonnes 1=lignes
print("\nTri Asc par colonnes\n",mat_tri)

#Inversion de la matrice pour obtenir un tri descendant
print("\nTri Desc par colonnes\n",mat_tri[::-1])



Résultats
[[ 5 15 34 21 11]
 [ 3 11 75  3 56]
 [19 30 24 95 99]
 [10 24 43 45 65]
 [45 87 18 78 74]]

Colonne 0
 [ 5  3 19 10 45]

Tri Asc par colonnes
 [[ 3 11 18  3 11]
 [ 5 15 24 21 56]
 [10 24 34 45 65]
 [19 30 43 78 74]
 [45 87 75 95 99]]

Tri Desc par colonnes
 [[45 87 75 95 99]
 [19 30 43 78 74]
 [10 24 34 45 65]
 [ 5 15 24 21 56]
 [ 3 11 18  3 11]]

Merci beaucoup pour l'aide !
Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
59
Bonjour,
Voici un exemple de tri "descending" (python v3):
liste =[1,8,9,7,3,5,4,2,6]
print("ascending", sorted(liste))
print("descending", sorted(liste,reverse=True))

Bonjour,

Je sais faire un tri en décroissant, mais je ne sais pas parcourir chaque colonne pour faire ces tri