Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
ens:dasi2015-2016:tpchaines [2016/01/06 13:57]
admin Cordier Amelie () [Partie 2. Les mots de passe d'Edward]
ens:dasi2015-2016:tpchaines [2016/01/06 14:10]
admin Cordier Amelie () [Partie 4. La vengeance d'Edward]
Ligne 3: Ligne 3:
 <note important>Ce TP sera noté.</note>  <note important>Ce TP sera noté.</note> 
  
-===== Partie 1. Préparation de l'environnement de travail=====+===== Partie 1. Préparation de l'environnement de travail =====
    
  
Ligne 12: Ligne 12:
   * Commitez ces fichiers.    * Commitez ces fichiers. 
  
-Dans la suite du sujet, vous devez faire un commit à chaque fois que vous verrez le mot "COMMIT"+Dans la suite du sujet, vous devez faire un commit à chaque fois que vous verrez le mot "COMMIT"
 + 
 +À la fin du TP (et uniquement à ce moment là), vous devrez pousser l'ensemble de vos commits sur GitHub et m'envoyer l'URL de votre dépôt. 
  
 ===== Partie 2. Les mots de passe d'Edward ===== ===== Partie 2. Les mots de passe d'Edward =====
Ligne 124: Ligne 126:
   6. Sous quelles conditions peut-on voir apparaître le chiffre 4 dans la suite de Conway ?     6. Sous quelles conditions peut-on voir apparaître le chiffre 4 dans la suite de Conway ?  
  
 +
 +===== Ressources =====
 +
 +<code python password.py>
 +
 +# coding: utf-8 
 +def getNext(password):
 +    """
 +    Série de tests exprimés en doctest
 +    >>> getNext('a')
 +    'b'
 +    >>> getNext('az')
 +    'ba'
 +    >>> getNext('bc')
 +    'bd'
 +    """
 +    pwd = list(password)  #1
 +    found = False
 +    i=len(pwd)-1
 +
 +    while not found:
 +        if pwd[i] < 'z':
 +           pwd[i] = chr(ord(pwd[i])+1)  #2
 +           found = True             
 +        else:
 +           i = i-1 
 +    
 +    return ''.join(pwd) #3
 +
 +
 +
 +# Grâce à ce fragment de code, si vous exécutez ce fichier, les tests doctests seront exécutés également. 
 +# Si vous ne voulez plus que les tests s'exécutent, commentez les deux lignes ci-dessous. 
 +# Si vous préférez lancer vos tests à la main, commentez également les lignes, et utilisez "python -m doctest pass.py" en console. 
 +if __name__ == "__main__":
 +    import doctest
 +    doctest.testmod()
 +</code>
 +
 +<code python test_pass.py>
 +
 +# coding: utf-8 
 +import unittest
 +import password as pwd
 +
 +class TestPassword(unittest.TestCase):
 +
 +    def test_getNextNormal(self):
 +        self.assertEqual(pwd.getNext("abcd"), "abce")
 +
 +    def test_getNextEndLine(self):
 +        self.assertEqual(pwd.getNext("abhz"), "abia")
  
  
 +# Permet d'exécuter les tests si ce fichier est exécuté
 +unittest.main()
  
  
 +</code>
 //Ce TP est fortement inspiré des exercices du prodigieux projet Advent of Code. Merci à son créateur pour ces belles sources d'inspiration.//  //Ce TP est fortement inspiré des exercices du prodigieux projet Advent of Code. Merci à son créateur pour ces belles sources d'inspiration.//