From 18fabdfeb6957cedf2b1e78924b35681160a54d2 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sun, 15 Mar 2015 09:34:46 +0100 Subject: [PATCH] =?UTF-8?q?Affichage=20des=20r=C3=A9ponses=20on/off?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- S2/TP4/analyse_tris.py | 122 ++++++++++++++++++++++++----------------- 1 file changed, 71 insertions(+), 51 deletions(-) diff --git a/S2/TP4/analyse_tris.py b/S2/TP4/analyse_tris.py index 1e91d94..d253cf1 100644 --- a/S2/TP4/analyse_tris.py +++ b/S2/TP4/analyse_tris.py @@ -20,6 +20,7 @@ __date_creation__ = 'Tue, 10 Mar 2015 10:26:41 +0100' from random import randint +affichage = __name__ == '__main__' def partie(nom): """ @@ -28,7 +29,8 @@ def partie(nom): """ assert type(nom) == str - print('\n', nom, '=' * len(nom), sep='\n') + if affichage: + print('\n', nom, '=' * len(nom), sep='\n') def section(nom): @@ -38,7 +40,8 @@ def section(nom): """ assert type(nom) == str - print('\n', nom, '-' * len(nom), sep='\n') + if affichage: + print('\n', nom, '-' * len(nom), sep='\n') def question(numero): @@ -48,7 +51,19 @@ def question(numero): """ assert type(numero) == int - print('\n***', 'Question', numero, '***') + if affichage: + print('\n***', 'Question', numero, '***') + +def reponse(texte): + """ + str → ∅ + Affiche la réponse à la question. + """ + assert type(texte) == str + + if affichage: + print(texte) + partie("Prérequis") @@ -187,7 +202,7 @@ compteur = 0 tri_selection(liste_alea(100, -5000, 5000)) -print('{} comparaisons ont été faite pour cette liste.'.format(compteur)) +reponse('{} comparaisons ont été faite pour cette liste.'.format(compteur)) question(2) @@ -234,13 +249,14 @@ def afficher_tableau(donnees): question(1) -tableau = [['nb ', 'croissante ', 'aléatoire ', 'decroissante']] -for nb in range(1, 101): - tableau.append([nb, - tri_et_compte(tri_selection, liste_croissante(nb))[1], - tri_et_compte(tri_selection, liste_alea(nb, 0, 500))[1], - tri_et_compte(tri_selection, liste_decroissante(nb))[1]]) -afficher_tableau(tableau) +if affichage: + tableau = [['nb ', 'croissante ', 'aléatoire ', 'decroissante']] + for nb in range(1, 101): + tableau.append([nb, + tri_et_compte(tri_selection, liste_croissante(nb))[1], + tri_et_compte(tri_selection, liste_alea(nb, 0, 500))[1], + tri_et_compte(tri_selection, liste_decroissante(nb))[1]]) + afficher_tableau(tableau) question(2) @@ -248,68 +264,72 @@ partie("Analyse du tri par insertion") question(1) -tableau = [tableau[0]] -for nb in range(1, 101): - tableau.append([nb, - tri_et_compte(tri_insertion, liste_croissante(nb))[1], - tri_et_compte(tri_insertion, liste_alea(nb, 0, 500))[1], - tri_et_compte(tri_insertion, liste_decroissante(nb))[1]]) -afficher_tableau(tableau) +if affichage: + tableau = [tableau[0]] + for nb in range(1, 101): + tableau.append([nb, + tri_et_compte(tri_insertion, liste_croissante(nb))[1], + tri_et_compte(tri_insertion, liste_alea(nb, 0, 500))[1], + tri_et_compte(tri_insertion, liste_decroissante(nb))[1]]) + afficher_tableau(tableau) section("Dans le meilleur des cas") question(1) -print("Le meilleur des cas est lorsque la liste est déjà triée.") +reponse("Le meilleur des cas est lorsque la liste est déjà triée.") question(2) -print("Résultat théorique établi : c_{tri-insert}(n)=n-1") -tableau = [['i', 'coût comtpé', 'coût théor.', 'fidèle']] -tousFideles = True -for nb in range(1, 101): - c_compte = tri_et_compte(tri_insertion, liste_croissante(nb))[1] - c_theor = nb - 1 - fidele = c_compte == c_theor - if not fidele: - tousFideles = False - tableau.append([nb, c_compte, c_theor, fidele]) -afficher_tableau(tableau) -print("Les résultats comptés {} tous fidèles aux résultats théoriques." - .format("sont" if tousFideles else "ne sont pas")) +if affichage: + reponse("Résultat théorique établi : c_{tri-insert}(n)=n-1") + tableau = [['i', 'coût comtpé', 'coût théor.', 'fidèle']] + tousFideles = True + for nb in range(1, 101): + c_compte = tri_et_compte(tri_insertion, liste_croissante(nb))[1] + c_theor = nb - 1 + fidele = c_compte == c_theor + if not fidele: + tousFideles = False + tableau.append([nb, c_compte, c_theor, fidele]) + afficher_tableau(tableau) + reponse("Les résultats comptés {} tous fidèles aux résultats théoriques." + .format("sont" if tousFideles else "ne sont pas")) section("Dans le pire des cas") question(1) -print("Le pire des cas est lorsque la liste est triée dans l'ordre inverse.") +reponse("Le pire des cas est lorsque la liste est triée dans l'ordre inverse.") question(2) -print("Résultat théorique établi : c_{tri-insert}(n)=n(n-1)/2") -tableau = [tableau[0]] -tousFideles = True -for nb in range(1, 101): - c_compte = tri_et_compte(tri_insertion, liste_decroissante(nb))[1] - c_theor = nb * (nb - 1) // 2 - fidele = c_compte == c_theor - if not fidele: - tousFideles = False - tableau.append([nb, c_compte, c_theor, fidele]) -afficher_tableau(tableau) -print("Les résultats comptés {} tous fidèles aux résultats théoriques." - .format("sont" if tousFideles else "ne sont pas")) +if affichage: + reponse("Résultat théorique établi : c_{tri-insert}(n)=n(n-1)/2") + tableau = [tableau[0]] + tousFideles = True + for nb in range(1, 101): + c_compte = tri_et_compte(tri_insertion, liste_decroissante(nb))[1] + c_theor = nb * (nb - 1) // 2 + fidele = c_compte == c_theor + if not fidele: + tousFideles = False + tableau.append([nb, c_compte, c_theor, fidele]) + afficher_tableau(tableau) + reponse("Les résultats comptés {} tous fidèles aux résultats théoriques." + .format("sont" if tousFideles else "ne sont pas")) section("En moyenne") question(1) -t1 = tri_et_compte(tri_insertion, liste_alea(100, -5000, 5000))[1] -t2 = tri_et_compte(tri_insertion, liste_alea(100, -5000, 5000))[1] +if affichage: + t1 = tri_et_compte(tri_insertion, liste_alea(100, -5000, 5000))[1] + t2 = tri_et_compte(tri_insertion, liste_alea(100, -5000, 5000))[1] -print("Le nombre de comparaisons de la première liste est {t1}, celui de la deuxième liste est {t2}\ -.\nLes nombres de comparaisons pour ces deux tris sont {res}.".format(t1=t1, t2=t2, \ -res=("identiques (mais c'est un coup de chance)" if t1 == t2 else "différents"))) + reponse("Le nombre de comparaisons de la première liste est {t1}, celui de la deuxième liste \ +est {t2}.\nLes nombres de comparaisons pour ces deux tris sont {res}.".format(t1=t1, t2=t2, \ + res=("identiques (mais c'est un coup de chance)" if t1 == t2 else "différents"))) question(1)