Vérification d'un Code-barres
Les codes-barres sont omniprésents dans notre quotidien, utilisés pour identifier des produits dans les magasins, les bibliothèques, et bien d'autres domaines.
Exemple du calcul de la clé de contrôle
Nous allons étudier le Code EAN-13 : 9782091726649
Rappel : une valeur à la première position est d'indice 0, une valeur à la seconde position est d'indice 1 \(\cdots\)
Explication de l'algorithme
- On ne travaille que sur les 12 premiers chiffres.
- On lit le numéro de gauche à droite
- On réalise la somme de tous les chiffres situés à des positions impaires.
Pour l'exemple : \(9+8+0+1+2+6 = 26\). - On réalise la somme de tous les chiffres situés à des positions paires.
Pour l'exemple : \(7+2+9+7+6+4 = 35\). - On multiplie la somme des chiffres de positions paires par 3. Pour l'exemple : \(35 \times 3 = 105\).
- On additionne la somme multipliée par 3 avec la somme des chiffres de positions impaires. Pour l'exemple : \(105 + 26 = 131\).
- On calcule le reste de la division euclidienne par 10 de ce nombre. Pour l'exemple : \(131%10 = 1\).
- On retire le reste à 10 pour obtenir la valeur qui servira de vérification. Pour l'exemple : \(10-1 = 9\).
- Si cette valeur de vérification est égale au dernier chiffre du code barre. : Le numéro d'EAN est valide, sinon il ne l'est pas. Pour l'exemple : la clef de contrôle calculée est 9, le dernier chiffre du code barre est bien 9, il est donc bien valide.
À réaliser
Écrire une fonction verifier_longueur
qui prend en paramètre une chaîne de caractères et renvoie True
si le code-barres contient exactement 13 chiffres, False
sinon..
Exemple d'utilisation :
Écrire une fonction mettre_bonne_longueur
qui prend une chaîne de caractères et renvoie une chaîne de caractères contenant les 12 premiers caractères.
Exemple d'utilisation:
>>> mettre_bonne_longueur("9782091726649")
'978209172664'
>>> mettre_bonne_longueur("bonjourjesuisletexte")
"bonjourjesui"
Écrire une fonction somme_positions_impairs
qui prend en paramètre une chaîne de caractères représentant un code barre et renvoie un entier correspondant à la somme des chiffres de positions impaires.
Exemple d'utilisation:
Écrire une fonction somme_positions_pairs
qui prend en paramètre une chaîne de caractère représentant un code barre et renvoie un entier correspondant à la somme des chiffres de positions paires.
Exemple d'utilisation:
Écrire une fonction multiplier_par_trois
qui prend en paramètre un entier et renvoie son produit avec trois.
Exemple d'utilisation:
Écrire une fonction traitement
qui prend en paramètre deux entiers et renvoie un entier.
Cette fonction va :
- Réaliser la somme de ces deux entiers.
- Calculer le reste de la division par 10 de cette somme.
- Soustraire le reste de la division à 10.
Exemple d'utilisation
Écrire une fonction verification_clef
qui prend en paramètres un code barre représenté par une chaîne de caractère et un entier et renvoie True
si le dernier chiffre (clef) du code barre est égal à l'entier passé en paramètre, False
sinon.
Exemple d'utilisation:
Écrire une fonction validation_code_barre
qui prend en paramètre un code barre représenté par une chaîne de caractère et renverra True
s'il est valide, False
sinon.
Cette fonction utilisera toutes les fonctions précédentes pour réaliser la vérification notée au début de ce TP.
Exemple d'utilisation