• Aucun résultat trouvé

TP : Tester ses fonctions

N/A
N/A
Protected

Academic year: 2022

Partager "TP : Tester ses fonctions"

Copied!
2
0
0

Texte intégral

(1)

Première NSI M

me

Pierrot

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 ? »

(2)

Première NSI M

me

Pierrot

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")

def fibonacci(n):

'''

Liste des termes de la suite de Fibonacci de l'indice 0 à l'indice n inclus

@param n: (int) l'indice maximal voulu @return: (list) la liste des termes '''

if type(n) != int or n < 0:

return None x = 1

y = 1

suite_fibonacci = [x]

indice = 0

while indice < n:

x, y = y, x + y

suite_fibonacci.append(x) indice += 1

return suite_fibonacci

Références

Documents relatifs

Quatre hommes possédant des deniers ont trouvé une bourse remplie de deniers ; le premier dit que s’il avait les deniers de la bourse, il posséderait deux fois autant que le

linéaire des solutions de l’équation homogène, nous avons démontré qu’il y a une solution générale dépendant linéairement d’autant de constantes arbitraires qu’il

En 1202, Fibonacci s'intéressa au problème de croissance d'une population de lapins dans des circonstances idéales :?. on commence avec un couple de jeunes lapins ; un lapin âgé

2.→ Ecrire la relation littérale (précisée par des indices) qui permet de calculer la grandeur. 3.→ Convertir les valeurs dans la bonne unité et faire

Pour répondre à ce défi, il est préférable d’observer les relations entre les nombres plutôt que de pour- suivre le schéma.. C’est cela faire

Vous numéroterez vos copies et ferez apparaître clairement sur la première page le nombre de copies1. Vous prêterez une attention particulière au soin de vos copies et à la qualité

Vous numéroterez vos copies et ferez apparaître clairement sur la première page le nombre de copies.. Vous prêterez une attention particulière au soin de vos copies et à la qualité

Étant donnés cinq points A, B, G, D, D' et deux rapports anharmoniques p et p', trouver le point commun aux deux coniques passant Vune par A, B, C, D, Vautre par A, B, C, D' et