Programme Python
Résolu
Megamanbuster21
-
jee pee Messages postés 41518 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 41518 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, j’espère que vous allez bien.
Alors voila, on doit faire un programme qui vérifie la validité d'un code rib à 23 chiffre. Je vous mets toute la consigne précise :
Les 23 chiffres représentent :
_ le code banque à 5 chiffres ;
_ le code du guichet ou de l’agence à 5
chiffres ;
_ le numéro de compte (maximum 11 chiffres
ou lettres) ;
_ la clé RIB à 2 chiffres.
Il faut aussi remplacer les lettres:
A=J=1
B=K=S=2
C=L=T=3
D=M=U=4
E=N=V=5
F=O=W=6
G=P=X=7
H=Q=Y=8
I=R=Z=9
La clé rib d’un relevé se calcule comme suit :
R= reste de la division euclidienne de (89E+ 15G+ 3N) par 97
La clé RIB est alors : 97 ???? R
Où E est le code banque, G le code guichet et N le n° du compte(avec les lettres remplacées)
Voilà le code que j'ai fait pour vérifier la validité de la clé de contrôle RIB:
Le code ne veut pas prendre en compte la lettre, pourriez vous m'expliquer quelle est mon erreur et comment je peux la corriger? Merci d'avance
Alors voila, on doit faire un programme qui vérifie la validité d'un code rib à 23 chiffre. Je vous mets toute la consigne précise :
Les 23 chiffres représentent :
_ le code banque à 5 chiffres ;
_ le code du guichet ou de l’agence à 5
chiffres ;
_ le numéro de compte (maximum 11 chiffres
ou lettres) ;
_ la clé RIB à 2 chiffres.
Il faut aussi remplacer les lettres:
A=J=1
B=K=S=2
C=L=T=3
D=M=U=4
E=N=V=5
F=O=W=6
G=P=X=7
H=Q=Y=8
I=R=Z=9
La clé rib d’un relevé se calcule comme suit :
R= reste de la division euclidienne de (89E+ 15G+ 3N) par 97
La clé RIB est alors : 97 ???? R
Où E est le code banque, G le code guichet et N le n° du compte(avec les lettres remplacées)
Voilà le code que j'ai fait pour vérifier la validité de la clé de contrôle RIB:
def test_rib(n): s=0 chaine=str(n) l=[int(el) for el in chaine] for el in l: if el=='A': el=1 elif el=='B': el=2 elif el=='C': el=3 elif el=='D': el=4 elif el=='E': el=5 elif el=='F': el=6 elif el=='G': el=7 elif el=='H': el=8 elif el=='I': el=9 elif el=='J': el=1 elif el=='K': el=2 elif el=='L': el=3 elif el=='M': el=4 elif el=='N': el=5 elif el=='O': el=6 elif el=='P': el=7 elif el=='Q': el=8 elif el=='R': el=9 elif el=='S': el=2 elif el=='T': el=3 elif el=='U': el=4 elif el=='V': el=5 elif el=='W': el=6 elif el=='X': el=7 elif el=='Y': el=8 elif el=='Z': el=9 else: el=el lE=[l[i] for i in range(0,5,1)] lG=[l[i] for i in range(5,10,1)] lN=[l[i] for i in range(10,21,1)] E=0 G=0 N=0 c=0 c1=4 while c1>=0: for el in lE: m1=10**c1 E=E+el*m1 c1=c1-1 c2=4 while c2>=0: for el in lG: m2=10**c2 G=G+el*m2 c2=c2-1 c3=12 while c3>=0: for el in lN: m3=10**c3 N=N+el*m3 c3=c3-1 c=c+l[21]*10+l[22] S=89*E+15*G+3*N R=S%97 if c==97-R: return True else: return False print(test_rib(16606100360117092851C68))
Le code ne veut pas prendre en compte la lettre, pourriez vous m'expliquer quelle est mon erreur et comment je peux la corriger? Merci d'avance
A voir également:
- Programme Python
- Citizen code python avis - Accueil - Outils
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
1 réponse
Bonjour,
D'abord je ferais
D'abord je ferais
print(test_rib("16606100360117092851C68")), mais surtout quand el contient "C", tu ne peux pas faire int(el) qui n'est accepté que si la variable contient des chiffres, pas des lettres, tu devrais traiter la chaine de départ comme des caractères, et ne faire la conversion en entier qu'une fois la transposition de la lettre effectuée.