Affichage des réponses on/off

This commit is contained in:
Geoffrey Frogeye 2015-03-15 09:34:46 +01:00
parent b11cc3df57
commit 18fabdfeb6

View file

@ -20,6 +20,7 @@ __date_creation__ = 'Tue, 10 Mar 2015 10:26:41 +0100'
from random import randint from random import randint
affichage = __name__ == '__main__'
def partie(nom): def partie(nom):
""" """
@ -28,6 +29,7 @@ def partie(nom):
""" """
assert type(nom) == str assert type(nom) == str
if affichage:
print('\n', nom, '=' * len(nom), sep='\n') print('\n', nom, '=' * len(nom), sep='\n')
@ -38,6 +40,7 @@ def section(nom):
""" """
assert type(nom) == str assert type(nom) == str
if affichage:
print('\n', nom, '-' * len(nom), sep='\n') print('\n', nom, '-' * len(nom), sep='\n')
@ -48,8 +51,20 @@ def question(numero):
""" """
assert type(numero) == int assert type(numero) == int
if affichage:
print('\n***', 'Question', numero, '***') 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") partie("Prérequis")
@ -187,7 +202,7 @@ compteur = 0
tri_selection(liste_alea(100, -5000, 5000)) 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) question(2)
@ -234,13 +249,14 @@ def afficher_tableau(donnees):
question(1) question(1)
tableau = [['nb ', 'croissante ', 'aléatoire ', 'decroissante']] if affichage:
for nb in range(1, 101): tableau = [['nb ', 'croissante ', 'aléatoire ', 'decroissante']]
for nb in range(1, 101):
tableau.append([nb, tableau.append([nb,
tri_et_compte(tri_selection, liste_croissante(nb))[1], 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_alea(nb, 0, 500))[1],
tri_et_compte(tri_selection, liste_decroissante(nb))[1]]) tri_et_compte(tri_selection, liste_decroissante(nb))[1]])
afficher_tableau(tableau) afficher_tableau(tableau)
question(2) question(2)
@ -248,68 +264,72 @@ partie("Analyse du tri par insertion")
question(1) question(1)
tableau = [tableau[0]] if affichage:
for nb in range(1, 101): tableau = [tableau[0]]
for nb in range(1, 101):
tableau.append([nb, tableau.append([nb,
tri_et_compte(tri_insertion, liste_croissante(nb))[1], 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_alea(nb, 0, 500))[1],
tri_et_compte(tri_insertion, liste_decroissante(nb))[1]]) tri_et_compte(tri_insertion, liste_decroissante(nb))[1]])
afficher_tableau(tableau) afficher_tableau(tableau)
section("Dans le meilleur des cas") section("Dans le meilleur des cas")
question(1) 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) question(2)
print("Résultat théorique établi : c_{tri-insert}(n)=n-1") if affichage:
tableau = [['i', 'coût comtpé', 'coût théor.', 'fidèle']] reponse("Résultat théorique établi : c_{tri-insert}(n)=n-1")
tousFideles = True tableau = [['i', 'coût comtpé', 'coût théor.', 'fidèle']]
for nb in range(1, 101): tousFideles = True
for nb in range(1, 101):
c_compte = tri_et_compte(tri_insertion, liste_croissante(nb))[1] c_compte = tri_et_compte(tri_insertion, liste_croissante(nb))[1]
c_theor = nb - 1 c_theor = nb - 1
fidele = c_compte == c_theor fidele = c_compte == c_theor
if not fidele: if not fidele:
tousFideles = False tousFideles = False
tableau.append([nb, c_compte, c_theor, fidele]) tableau.append([nb, c_compte, c_theor, fidele])
afficher_tableau(tableau) afficher_tableau(tableau)
print("Les résultats comptés {} tous fidèles aux résultats théoriques." reponse("Les résultats comptés {} tous fidèles aux résultats théoriques."
.format("sont" if tousFideles else "ne sont pas")) .format("sont" if tousFideles else "ne sont pas"))
section("Dans le pire des cas") section("Dans le pire des cas")
question(1) 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) question(2)
print("Résultat théorique établi : c_{tri-insert}(n)=n(n-1)/2") if affichage:
tableau = [tableau[0]] reponse("Résultat théorique établi : c_{tri-insert}(n)=n(n-1)/2")
tousFideles = True tableau = [tableau[0]]
for nb in range(1, 101): tousFideles = True
for nb in range(1, 101):
c_compte = tri_et_compte(tri_insertion, liste_decroissante(nb))[1] c_compte = tri_et_compte(tri_insertion, liste_decroissante(nb))[1]
c_theor = nb * (nb - 1) // 2 c_theor = nb * (nb - 1) // 2
fidele = c_compte == c_theor fidele = c_compte == c_theor
if not fidele: if not fidele:
tousFideles = False tousFideles = False
tableau.append([nb, c_compte, c_theor, fidele]) tableau.append([nb, c_compte, c_theor, fidele])
afficher_tableau(tableau) afficher_tableau(tableau)
print("Les résultats comptés {} tous fidèles aux résultats théoriques." reponse("Les résultats comptés {} tous fidèles aux résultats théoriques."
.format("sont" if tousFideles else "ne sont pas")) .format("sont" if tousFideles else "ne sont pas"))
section("En moyenne") section("En moyenne")
question(1) question(1)
t1 = tri_et_compte(tri_insertion, liste_alea(100, -5000, 5000))[1] if affichage:
t2 = tri_et_compte(tri_insertion, liste_alea(100, -5000, 5000))[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]
print("Le nombre de comparaisons de la première liste est {t1}, celui de la deuxième liste est {t2}\ reponse("Le nombre de comparaisons de la première liste est {t1}, celui de la deuxième liste \
.\nLes nombres de comparaisons pour ces deux tris sont {res}.".format(t1=t1, t2=t2, \ 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"))) res=("identiques (mais c'est un coup de chance)" if t1 == t2 else "différents")))
question(1) question(1)