IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Clé de contrôle du RIO


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Clé de contrôle du RIO
    Bonjour le forum,

    Je souhaite comprendre le calcul de la clé de contrôle du RIO et le retranscrire sur un tableau Excel. Malheureusement je ne comprends pas le langage Python.
    J'ai trouvé ceci sur Wiki :

    def calculCCC( OO, Q, RRRRRR, EZABPQMCDU): # les paramètres sont de type chaîne, ex : "00"
    concatenation = OO + Q + RRRRRR + EZABPQMCDU
    ordre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+" # caractères utilisés pour le codage (37 différents)

    a = b = c = 0 # initialisation de a, b et c

    for i in range(19): # boucle de 0 à 18, pour chaque index de position dans concatenation
    position = ordre.find(concatenation[i]) # on retrouve la position du caractère concatenation[i] dans ordre

    a = (1 * a + position) % 37 # calcul du nombre a, "% 37" pour modulo 37
    b = (2 * b + position) % 37
    c = (4 * c + position) % 37

    return ordre[a] + ordre[b] + ordre[c] # on encode a, b et c en leur caractères correspondants, et on concatène le tout


    Si quelqu'un peut m'aider en me donnant une exemple de calcul. J'ai joins le début de mes calculs dans le fichier Excel en PJ.
    Me

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Pardonne-moi mais ton code est abscons.

    Tu as encore le lien où tu l'as trouvé ? Tu l'as peut-être mal recopié.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 1
    Points
    1

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Comme ça c'est plus clair.

    Tu as la signification des arguments sur cette page, il suffit de les passer à la fonction, exactement dans le même ordre.

    Avec les balises code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    def calculCCC( OO,  Q,  RRRRRR,  EZABPQMCDU):
        """"Retourne le code RIO.
     
        Args:
        OO -- identifiant de l'opérateur 
        Q -- qualité du client: E (entreprise) ou P (particulier)
        RRRRRR -- identification du contrat
        CCC -- code de contrôle
        """
        concatenation = OO + Q + RRRRRR + EZABPQMCDU
        ordre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+"
        a = b = c = 0
        for i in range(19):
            position  = ordre.find(concatenation[i]) 
            a = (1 * a + position) % 37
            b = (2 * b + position) % 37
            c = (4 * c + position) % 37
     
        return ordre[a] + ordre[b] + ordre[c]
    Bon, on ne nommerait pas les arguments de cette façon, mais je suppose qu'il s'agissait de reprendre les même termes que dans l'explication qui précède.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci mais je ne suis pas plus avancé. Visiblement tout semble clair pour toi mais pour moi cela ne change rien.
    Le fichier que j'ai mis en pièce jointe est tout ce que j'ai essayé de déchiffrer. Je souhaite appliquer cette fonction, ce langage python par des calculs et des fonctions Excel pour obtenir la clé de contrôle automatiquement en renseignant le numéro de téléphone, le 00, le Q et le RRRRRR.
    J'espère avoir été clair. Merci.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par eddy1975 Voir le message
    Le fichier que j'ai mis en pièce jointe est tout ce que j'ai essayé de déchiffrer. Je souhaite appliquer cette fonction, ce langage python par des calculs et des fonctions Excel pour obtenir la clé de contrôle automatiquement en renseignant le numéro de téléphone, le 00, le Q et le RRRRRR.
    J'espère avoir été clair. Merci.
    Et vous voulez que quelqu'un écrive le code pour vous?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Sans vouloir être maladroit dans mes propos.....est-ce que j'ai écris vouloir un code.
    Je souhaite juste comprendre par des explications plus claires car je ne connais et comprends pas le python.
    Je cherche juste les appliquer dans Excel.
    Il y forcement un mécanisme à décrypter dans tout ça.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Une fois que j'aurais compris je me débrouille pour créer mon tableur.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par eddy1975 Voir le message
    Je cherche juste les appliquer dans Excel.
    Il y forcement un mécanisme à décrypter dans tout ça.
    Reprenez le code dans le Wiki, il contient le minimum d'explications en commentaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def calculCCC( OO,  Q,  RRRRRR,  EZABPQMCDU): # les paramètres sont de type chaîne, ex : "00"
        concatenation = OO + Q + RRRRRR + EZABPQMCDU
        ordre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+" # caractères utilisés pour le codage (37 différents)
     
        a = b = c = 0 # initialisation de a, b et c
     
        for i in range(19):  # boucle de 0 à 18, pour chaque index de position dans concatenation
            position  = ordre.find(concatenation[i]) # on retrouve la position du caractère concatenation[i] dans ordre
     
            a = (1 * a + position) % 37 # calcul du nombre a, "% 37" pour modulo 37
            b = (2 * b + position) % 37
            c = (4 * c + position) % 37
     
        return ordre[a] + ordre[b] + ordre[c] # on encode a, b et c en leur caractères correspondants, et on concatène le tout
    Je veux bien que çà reste "illisible" pour vous, mais sauf à demander de préciser certains détails, on ne pourra guère faire mieux.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Je joins en pièce jointe les détails de tous les calculs en fonction du code que j'ai retranscris sur Excel. Je ne trouve pas les clés de contrôle....ni d'où vient l'erreur.
    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par eddy1975 Voir le message
    Je joins en pièce jointe les détails de tous les calculs en fonction du code que j'ai retranscris sur Excel. Je ne trouve pas les clés de contrôle....ni d'où vient l'erreur.
    Ca serait plus simple d'écrire çà avec une macro VB... peut être allez vous trouver de l'aide dans le forum excel.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Comment empêcher la mise à jour d'un contrôle à l'écran ?
    Par JojoLaFripouille dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2003, 12h52
  2. Codes de contrôle des imprimantes
    Par hetzel dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 21/03/2003, 17h17
  3. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  4. [contrôle] dbDateTimePicker ???
    Par Fizgig dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/11/2002, 15h45
  5. [Kylix] Contrôle DBGrid
    Par KThrax dans le forum EDI
    Réponses: 1
    Dernier message: 10/05/2002, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo