Première NSI M
mePierrot
Tester son code pour avancer dans les projets
Thème : Techniques de programmation Compétences à acquerir :
Savoir tester ses programmes au fur et à mesure de leur élaboration
Notions : Les tests fonctionnels
Eléments d’information et exemples.
Sitographie :
https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/tp:python:python01 https://qkzk.xyz/docs/nsi/cours_premiere/programmation/tester/
Exemple 1 :
def binendec(binaire):
"""
Converti une liste de bit sous forme d'une chaine de caractère en nombre décimal correspondant @author: marie
"""
bibi = []
for s in binaire : bibi.append(int(s)) d = 0
p = len(bibi) - 1 for b in bibi : d = d + b*2**p p = p - 1 return d
if __name__ == '__main__' :
assert binendec('0000')==0,"test val nulle"
assert binendec('0001')==1,"test 1"
assert binendec('0010')==2,"test 2"
assert binendec('1111')==15,"test max 4 bits"
assert binendec('100000000000')==2**11,"test 5"
print("Tests OK")
Syntaxe de base :
def nom_de_ma_fonction(arg1 , arg2 , ...):
"""
documentation de la fonction """
|
| # lignes de codes qui déterminent val | # à partir des arguments
|
return val
if __name__ == '__main__' :
assert nom_de_ma_fonction(a1,b1,..)==c1,"test 1"
assert nom_de_ma_fonction(a2,b2,..)==c2,"test 2"
… … …
print("Tests OK")
Exemple 2 :
def devine_cle(occ):
"""
En partant de l'hypothèse où "E" est la lettre la plus présente dans un texte écrit en français trouver la clé de César en comparant les occurrences de chaque lettre dans le texte codé.
@param occ : tableau de 26 valeurs ; @return cle : 0 < entier < 26 """
position_du_e = occ.index(max(occ)) cle = (position_du_e + 22) % 26 return cle
if __name__ == '__main__' :
assert devine_cle([0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])==0,"test 1"
assert devine_cle([0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])==3,"test 2"
assert devine_cle([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0])==20,"test 3"
assert devine_cle([0,500,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])==23,"test 4"
print("Tests OK")
La suite de Fibonacci
est une suite d'entiers dans laquelle chaque terme est la somme des deux termes qui le précèdent. Elle commence généralement par les termes 0 et 1 (parfois 1 et 1) et ses premiers termes sont : 0, 1, 1, 2, 3, 5, 8, 13, 21, etc.Elle doit son nom à Leonardo Fibonacci qui, dans un problème récréatif posé dans l'ouvrage Liber abaci publié en 1202, décrit la croissance d'une population de lapins : « Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un mur. Combien de couples obtient-on en un an si chaque couple engendre tous les mois un nouveau couple à compter du troisième mois de son existence ? »
Première NSI M
mePierrot
Travail à réaliser
Exo 0 … on s’échauffe
Ecrivez une fonction accompagnée de ses tests qui calcule l’air d’un rectangle à partir de la longueur de ses cotés Ex. aire(4,3) 12 → 12
Exo 1 …
Ecrivez une fonction avec sa batterie de tests qui inverse la casse d’une chaine de caractère.
Ex. Rage rAGE → 12 Exo 2 … faux plat
Ecrivez une fonction avec sa batterie de tests qui donne les solutions d’une équation du second degrès (ax²+bx+c=0), connaissant les trois coeficients a, b et c
Exo 3 … pente douce
Voici une fonction qui donne les n+1 premiers termes de la suite de fibonacci.
Ecrivez le programme permettant de tester cette fonction, en particulier :
• La longueur de la liste rendue
• Différents résultats de valeurs attendues
• Que la liste est constituée d’entiers
• Qu’elle renvoie bien « None » dans les cas impossibles.
Exo 4 : Ça devient sportif
Écrivez une fonction qui prend en paramètres 3 nombres et indique s'il est possible de
construire un triangle (non réduit à un segment) ayant ces 3 valeurs pour longueurs de côtés.
Les tests sont donnés
Exo 5 : Sans les mains
Écrivez une fonction qui associe un nombre à un mot. Pour trouver ce nombre on ajoutera la valeur de chaque lettre du mot. La valeur du A sera 1, celle du B : 2…. et celle du Z : 26.
Attention, votre fonction devra associer les valeurs 1, 2… que les lettres soient en majuscule ou en minuscule. Les autres caractères seront tout simplement ignorés, ainsi que les caractères accentués.
def arithmancie(chaine):
pass
if __name__=='__main__':
assert arithmancie("A") == 1 assert arithmancie("BABAR") == 24 assert arithmancie("BAbar") == 24 assert arithmancie("Lucifer") == 74
assert arithmancie("Babar et ses z'AMIS") == 160 assert arithmancie("Ça, c'est assez pénible") == 176 print("Tests OK")
def triangle(a, b, c):
pass
if __name__ == '__main__':
assert triangle(2, 3, 4) == True, "Test 1"
assert triangle(4, 2, 3) == True, "Test 2"
assert triangle(3, 4, 2) == True, "Test 3"
assert triangle(2, 5, 1) == False, "Test 4"
assert triangle(2, 3, -1) == False, "Test 5"
assert triangle(2, 3, 5) == False, "Test 6"
print("Tests OK")