Mini projet isn code barre [Résolu]

Signaler
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020
-
Franky-9
Messages postés
1
Date d'inscription
samedi 4 janvier 2020
Statut
Membre
Dernière intervention
4 janvier 2020
-
bonjour
en isn nous avons un exercice a faire qui et le suivant :

Présentation : L’entreprise ENTAS installe un ascenseur dans un bâtiment de 9 étages. L’ascenseur est pourvu d’un lecteur optique qui lit des codes-barres. Chaque employé possède un identifiant qui, par un procédé que nous décrirons plus loin, permet de générer un code-barre unique. Ce dernier est constitué de six chiffres auquel s’ajoute un septième chiffre appelé clé de contrôle.
Créer un programme sous Python qui permet : la saisie de l’identifiant.
le calcul de la clé de contrôle
la représentation graphique du code barre .

Calcul de la clé de contrôle : Le calcul de la clé est un simple calcul mathématique. Prenons, par exemple 328947 comme identifiant:
- On ajoute tous les chiffres de rang impair du code (le premier + le troisième + cinquième en partant de la gauche),
ce qui nous donne une valeur i. Dans notre cas, i = 3 + 8 + 4 = 15
-On ajoute ensuite tous les chiffres de rang pair du code ce qui nous donne une valeur p.
Dans notre cas, p = 2 + 9 + 7 = 18
-On calcule ensuite n = i + 3p. Dans notre cas, n = 15 + (3 * 18) = 69
- On prend ensuite le plus grand multiple de 10 qui est le plus proche au-dessus de n. Dans notre cas, c’est 70.
- Enfin, la clé est la soustraction de ce multiple avec n. Dans notre cas, clé = 70 − 69 = 1 On met cette clé après les six chiffres du code et on obtient les sept chiffres requis pour générer le code barres.

Méthode choisie par la société pour déterminer le code barre : Chaque chiffre de l’identifiant+clé de contrôle est écrit sous forme binaire sur un quartet. La concaténation des chaînes de caractères de ces écritures binaires forment l’identifiant codé. Ainsi avec 328947 comme identifiant, on obtient l’identifiant codé correspondant : 0011 001010001001010001110001

je ne vois absolument pas comment faire cette exercice j'ai rapidement commencer un programme mais cela ne me mène nulle part et nous devons aussi crée le code barre avec turtle
import turtle
liste1 = 328947
listenb= [int(c) for c in str(liste1)]# sépare le nombre en plusieur partie

i=listenb[0],listenb[2],listenb[4]# prend tout les chiffre de rang impair
i1=sum(i)#additionne tout les chiffre de rang impair

p=listenb[1],listenb[3],listenb[5]#prend tout les chiffre de rang pair
p1=sum(p)#additionne tout les chiffre de rang pair
p1= p1*3#multiplie ensuite p1 par 3 pour la suite

n=i1,p1#crée une liste n avec i1 et p1
n1=sum(n)#additionne i1 et p1


print(n1)

3 réponses

Messages postés
60810
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
24 janvier 2020
5 198
Bonjour,

Merci pour cette information. As-tu une question ?

Pour rappel :
Les réponses sont données par des bénévoles, pas par des machines. Il est vivement recommandé d'user des formes minimales de la politesse ("bonjour', "s'il vous plait", "merci d'avance") pour rester dans le cadre de notre charte d'utilisation.

Merci de penser à attribuer au code la couleur syntaxique et la forme correcte avec le bouton
<>
.
Bonjour,

Pour le moment, oublie turtle et commence par travailler à calculer la clef du code barre.

On te demande pour ça de calculer les sommes des chiffres en position paires, et impaires.

Pour savoir si un nombre est divisible par 2, on utilise le modulo, en python c'est le caractère %.

On prend un code barre de test pour commencer à travailler (tu utiliseras input par la suite), on déclare 2 variables pour enregistrer les sommes, et on parcourt la chaine du code barre avec un range.

somme_pairs = 0
somme_impairs = 0
code_barre = '328947'
for i in range(len(code_barre)):
    if i % 2:
        print('i est impair')
    else:
        print('i est pair')
    print(code_barre[i])


Avec ce bout de code, tu as de quoi comprendre comment ça fonctionne pour commencer ton programme et calculer les deux sommes.
Ne pas oublier de convertir
code_barre[i]
en int
computerone
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020

merci de ta réponse j'ai donc pris un code bar test et j'ai réussi a faire la clé de contrôle



import turtle
from math import *
liste1 = 328947
listenb= [int(c) for c in str(liste1)]# sépare le nombre en plusieur partie

i=listenb[0],listenb[2],listenb[4]# prend tout les chiffre de rang impair
i1=sum(i)#additionne tout les chiffre de rang impair

p=listenb[1],listenb[3],listenb[5]#prend tout les chiffre de rang pair
p1=sum(p)#additionne tout les chiffre de rang pair
p1= p1*3#multiplie ensuite p1 par 3 pour la suite

n=i1,p1#crée une liste n avec i1 et p1
n1=sum(n)#additionne i1 et p1

supn1 = (n1/10)#transforme n1 en nombre decimale
supn2 =ceil(supn1)#arondie le nombre a l'exer afin de ne pas avoir de nombre négatif ensuite
supn3 = supn2*10#enfin multiplie le nombre par 10
clé=supn3-n1#crée la clé de controle

listenb.append(clé)#ajoute la clé de controle aux nombre de dépard


mais maintenant je ne vois pas comment faire pour convertir tout les nombre en binaire ?
Chris 94
Messages postés
60810
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
24 janvier 2020
5 198 > computerone
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020

Merci d'utiliser correctement le bouton "code" !
Messages postés
1
Date d'inscription
samedi 4 janvier 2020
Statut
Membre
Dernière intervention
4 janvier 2020

Tu saurais ce qu’il faut faire pour générer à la fin le code barre à partir du binaire si tu pouvais me donner la réponse ça serait sympa ????merci d’avance ( ps il me reste que demain)