Parcourir la colonne

Résolu
Azn - 9 avril 2020 à 23:22
 Azn - 11 avril 2020 à 18:30
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
A voir également:

2 réponses

lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
11 avril 2020 à 17:23
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]]

1
Merci beaucoup pour l'aide !
0
Rejoignez-nous