Inscription / Connexion Nouveau Sujet

1 2 +


Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 22:02

Bonjour, j'ai vérifié et il s'agit bien d'une liste.
Comme c'est une liste composée de 13 chiffres dans la 1ère question, est-ce-qu'on peut utiliser len(L)? Et comme il y a 13 chiffres donc len(13).

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 22:40

voulez-vous reprendre depuis le début?

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 22:58

C'est la même programme qu'on a déjà trouvé non? Seulement il faul definir N par len(13).
def cle(N):
     N=len(13)
    R= N%97
    C=97-R
    return C

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 23:02

N=len(13) affecte la valeur 13 à N
et puis N est notre liste donc on ne veut pas trop la changer
il faut à partir des chiffres dans N recomposer le nombre constitué de ces 13 chiffres
pour cela, je vous conseille de jeter un coup d'oeil ici avant de continuer car on en aura besoin  

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 23:09

Oui j'ai regardé et fait les exercices.

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 23:16

donc à partir d'une liste N=[a,b,c,d,e,f,g,h,i,j,k,l,m, comment écrire le nombre K=abcdefghijklm ?


il faut ensuite coder cela avec a=N[0], b=N[1], ... m=N[12] : on pourra (ou non) se servir d'une boucle pour cette étape
puis calculer la clé avec
R=K%97
C=97-R

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 23:17

lire

bbjhakan @ 18-11-2020 à 23:16

donc à partir d'une liste N=[a,b,c,d,e,f,g,h,i,j,k,l,m]

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 23:39

Je n'ai pas compris comment écrire le nombre K. Comme une liste ? Ou le décomposer comme
K= a×10**12+b×10**11+....+m×1?

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 18-11-20 à 23:48

très bien il fallait le décomposer comme vous l'avez fait
il reste "plus qu'à" implémenter ça sous python comme je l'ai dit en prenant a= N[0], b=N[1], ... m= N[12]

en revanche l'écriture de la somme est assez fastidieux donc je propose de le faire à l'aide d'une boucle
on initialise K à 0 et pour i=0,1,...,12 on fait K= K+N[i]* 10^ (..)  une idée pour la puissance de 10 (en fonction de i)?
par exemple pour i=0
K=K+N[0]*10^(12)
pour i=1 K=K+N[1]*10^(11)
et ainsi de suite

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 19-11-20 à 00:00

D'accord.
Je pense que en fonction de i,
K= K+N[i]*10^(12-i)

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 19-11-20 à 00:03

très bien
pouvez-vous donc écrire le code pour la question 1 ?

Posté par
ZEDMAT
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 20-11-20 à 10:44

Bonjour à vous deux,

Pour ma propre "formation Python", j'ai suivi attentivement vos échanges et cela a été très instructif .


Je trouve un peu dommage que ishaal ne poursuive pas car j'aurais sûrement encore des "choses" à apprendre...

Dans mes tentatives "personnelles", j'ai élaboré un petit programme qui permet la saisie de 15 chiffres (code INSEE + clé), leur rangement dans une liste et surtout la reconstitution du nombre formant le code INSEE à 13 chiffres.


En "raccordant" ce script aux 2 fonctions cle() et contrôle() [la seconde ayant été "adaptée"... au script], je pense avoir trouvé une solution qui -d'après quelques tests-... fonctionne.

Elle n'est pas satisfaisante, eu égard, à la demande de l'énoncé puisque la fonction cle(), a pour argument un nombre et pas une liste mais je pense qu'en incorporant dans cette fonction le traitement de la liste de 15 chiffres pour en faire un nombre de... 13 chiffres,  on devrait obtenir.... mieux.

Je joins mon petit bout de script (j'en suis très "fier" même s'il doit beaucoup aux explications de bbjhakan ) avec l'espoir d'encouragerishaal à reprendre sa quête du Graal !

Bonne journée.

L=[]
N=0
for i in range(15):
    print("chiffre ",i+1)
    n=int(input("nbre entier entre 0 et 9->  "))
    L.append(n)
    if i<13:
        N=N+n*10**(15-i-3)
    print(N,L)
    print()

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 20-11-20 à 20:36

Bonjour,
Je suis vraiment désolée de ne pas pouvoir poursuivre pour certains problèmes.
J'ai essayé d'écrire le code pour question 1
Def clé (N):
   n=int(input(nombre entier entre 0 et 9))
   N=N+n[0]*10**(12-i)
   R=N%97
   C=97-R
       return C

Mais je ne pense pas c'est correcte. 😔
@ZEDMAT merci pour le code. Pouvez-vous m'expliquer ce que vous avez écrit pour N?

Posté par
ZEDMAT
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 20-11-20 à 22:06

Pour la suite, je préférerais que bbjhakan revienne te guider.

Ce que je peux faire, c'est par contre te signaler les grosses erreurs de ton dernier script, qui c'est sûr va te mettre des messages d'erreurs.

Def clé (N):
cette lettre "d" en majuscule n'est pas reconnue par python : c'est def
On veut que l'argument de la fonction clé soit une liste ; j'aurais tendance à appeler cette liste plutôt L liste des 15 chiffres du code INSEE soit [1,5,6,1,3, etc.]
que N nombre formé par les 13 chiffres soit 15613etc.


  n=int(input(nombre entier entre 0 et 9))
Cette chaine de caractères DOIT être mise entre "guillemets"
Cette instruction va te permettre de saisir le premier chiffre du numéro INSEE.
Et les 14 autres ? (voir ma remarque ci dessus)
Je crois (pas sûr !) que ce serait une mauvaise idée de "saisir la liste" DANS cette fonction. Tu amènes à la fonction la liste L préalablement construite des 15 chiffres du code INSEE.


   N=N+n[0]*10**(12-i)
   que vaut N au départ ?
   c'est quoi n[0] ?
   c'est quoi i ?

  

   R=N%97
   C=97-R
       return C
problème d'indentation

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 20-11-20 à 22:36

Merci. J'en ai bien compris. En fait je savais qu'il fallait pas écrire def avec un d majuscule. Mais je n'avais pas fait attention.

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 20-11-20 à 22:44

en plus des remarques faites par ZEDMAT que je salue, on veut fabriquer le numéro INSEE à partir de la liste N des 13 chiffres, donné par l'énoncé
je l'avais nommé K, et pour son calcul, on prend en compte que

bbjhakan @ 18-11-2020 à 23:48

en revanche l'écriture de la somme est assez fastidieux donc je propose de le faire à l'aide d'une boucle
on initialise K à 0 et pour i=0,1,...,12 on fait K= K+N[i]* 10^ (12-i)


comment faire?

Posté par
ishaal
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 20-11-20 à 23:03

def clé (N):
     i=int(input("nombre entier entre 0 et 12"))
      for i in range(N, N+i):
      N=N+n[i]*10**(12-i)
     R=N%97
     C=97-R
     return C

Posté par
bbjhakan
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 21-11-20 à 00:27

pourquoi mettre i=int(...) ici ça ne sert pas
ensuite je vous ai dit qu'on nomme pas le numéro INSEE comme la liste sinon on pourra pas continuer, on perd la liste puisqu'on lui donne une nouvelle "définition"
il faut choisir une nouvelle variable, qu'on initialise à 0 au début.

ensuite quelles sont les valeurs prises par i ici :

bbjhakan @ 18-11-2020 à 23:48

on initialise K à 0 et pour i=0,1,...,12

Posté par
malou Webmaster
re : CLÉ DE CONTRÔLE D'UN NUMÉRO INSEE Python 21-11-20 à 08:55

Bonjour à tous
ishaal, tu récidives en quelques jours, cela n'est pas admissible

attentionextrait de c_faq la FAQ du forum :

Q29 - Avoir plusieurs comptes est-il autorisé ?

attentionextrait de c_faq la FAQ du forum :

Q30 - J'ai été averti ou banni, pourquoi, et que faire ?

attentionextrait de c_faq la FAQ du forum :

Q25 - Pourquoi le respect des règles est-il si important sur ce forum ?

attentionextrait de c_faq la FAQ du forum :

Q24 - Moi, tout ce qui m'intéresse, c'est d'obtenir de l'aide. Vos règles du forum, je n'en ai rien à faire !

1 2 +




Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !