Programme nomination_test.py


import random

def genere_fichier_exemple (nom) :
    """cette fonction cree un fichier d'exemple contenant des prenoms
    et des reponses, le format est le suivant :
    
    prenom, espace, liste des reponses mise bout a bout, passage a la ligne"""
    prenom = [  "jean", "cecile", "juliette", "daniel", "julie", \
                "gerard", "amelie", "charles", "alix", "frederic", \
                "claire", "richard" ]
    f = open (nom, "w")
    for p in prenom :
        f.write (p)
        f.write (" ")
        for i in range (0,20) :
            a = random.randint (0,5) + 1
            f.write (str (a))
        f.write ("\n")
    f.close ()
    
class Personne :
    """on definit une personne"""
    def __init__ (self, prenom, reponse) :
        self.prenom  = prenom
        self.reponse = reponse
        self.commun  = 0    # compte le nombre de points communs
        
    def __cmp__ (self, autre) :
        """operateur de comparaison, reponse a la question 5"""
        if self.commun == autre.commun : return 0
        if self.commun < autre.commun : return -1
        return 1
        
    def __str__ (self) :
        """pour l'affichage"""
        s = self.prenom + "\t" + str (self.commun)
        return s
        
    def point_commun (self, autre) :
        """calcul le nombre de points commun entre deux personnes"""
        s = 0
        for i in range (0, len (self.reponse)) :
            if self.reponse [i] == autre.reponse [i] : s += 1
        return s
        
    
def lit_reponse (nom) :
    """on relie le fichier ecrit avec la fonction precedente"""
    f = open (nom, "r")
    line = f.readlines ()
    f.close ()
    
    rep = []
    for l in line :
        s = l.replace ("\n", "")  # on enleve les fins de ligne
        spl = s.split ()    # on coupe la ligne en deux, les deux morceaux
                            # separes par des espaces
        rep.append ( Personne ( spl [0], spl [1] )) 
    return rep
    
def point_commun (n, rep) :
    """calcule le nombre de points communs entre rep [n] et rep [i],
    stocke le resultat dans rep [i].commun"""
    for r in rep :
        d = r.point_commun (rep [n])
        r.commun = d
    
###########################################################    
# debut du programme
###########################################################
# creation du fichier
genere_fichier_exemple ("reponses.txt")

# relecture du fichier
rep = lit_reponse ("reponses.txt")

# calcule les points communs
point_commun (0, rep)

# on les trie par ordre croissant
rep.sort ()

print "le ou la plus proche ", rep [len (rep)-1]
print "le ou la plus loin ", rep [0]

# liste complete
for r in rep :
    print r

créé avec py2html version:0.62