Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercices][confirmé] carte bancaire

Anonyme
5 octobre 2010 à 17:29:44

var += i:


J'ai juste remarqué cette erreur (mais il doit y en avoir d'autres), sinon ton code pose un problème quand on teste le numéro donné par wikipedia dans son exemple pour l'algo de Luhn.

Numéro : 972487086 doit être fonctionnel.

Sinon par index on peut fonctionner de cette façon, à vérifier, j'ai fais ça vite fait

# -*- coding:utf8 -*-

def verifCarteValide(num_carte):
    """Vérifie que le numéro de carte satisafait une somme de contrôle luhn mod-10."""

    somme=0
    for index in range(len(num_carte)):
        if index!=0 and index%2==0:
            somme+=int(num_carte[index])
        else: 
            chiffre=int(num_carte[index])*2
            if chiffre>9:
                chiffre-=9
                somme+=chiffre
            else: somme+=chiffre
    return somme%10==0
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2011 à 3:18:51

Bonsoir, je me suis laissé tenter voici ma solution, je suis pas sur pour la fin (proposition d'un numéro valide):

nb = 17067846465464145

def luhn(nb):
    
    r = 0
    r += int(str(nb)[-1])
    
    for i, x in enumerate(str(nb)[::-1][1:]):

        if (i % 2 == 0):
            x = int(x) * 2
            
            if (int(x) > 9):
                for c in str(x):
                    r += int(c)
            else:
                r += int(x)
                
        else:
            r += int(x)

    return r

if (luhn(nb) % 10 == 0):
    print("Nombre {} Valide !".format(nb))

else:
    print("Nombre {} Invalide !".format(nb))

    for i in range(1, 10):
        nnb = str(nb) + str(i)

        if (luhn(int(nnb)) % 10 == 0):
            print("Ce numéro serait valide: {}".format(nnb))
  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2016 à 7:00:38

bonsoir j'ai un probleme,jai creer un fichier en notepad contenant plusieurs clients mais j'ai besoin afficher un client particulier dans ce fichier,je ne trouve pas de code pour cela

void Insererclient()
{ fich=fopen("bidess1.txt","a+");
    struct clients
 { char nom[15];
   char prenom1[15];
   char prenom2[15];
   int NIF[10];
   int NIN[10];
   int PAN[10];
   char dateemission[15];
   char dateexpiration[15];
   int CVV[10];
   int Type[10];
   char Banqueemettrice[15];
   int Reseau[10];
   char datenaissance[15];
   char citoyennete[15];
   char adresse[15];
   int numerocompte[10];
   char Email[15];
   char Telephone[15];
   char numeroPIN[10];
   char Balancecarte[15];
  };
   typedef struct clients clients;
  {  clients c;
  if(fich!=NULL)
  {
    printf("\n clients \n");
    printf("\n nom:");
    scanf("%s",&c.nom);
    fprintf(fich,"%s\n",c.nom);
    printf("\n prenom1:");
    scanf("%s",&c.prenom1);
    fprintf(fich,"%s\n",c.prenom1);
    printf("\n prenom2:");
    scanf("%s",&c.prenom2);
    fprintf(fich,"%s\n",c.prenom2);
    printf("\n NIF:");
    scanf("%s",&c.NIF);
    fprintf(fich,"%s\n",c.NIF);
    printf("\n NIN:");
    scanf("%s",&c.NIN);
    fprintf(fich,"%s\n",c.NIN);
    printf("\n PAN   :");
    scanf("%s",&c.PAN);
    fprintf(fich,"%s\n",c.PAN);
    printf("\n date emission:");
    scanf("%s",&c.dateemission);
    fprintf(fich,"%s\n",c.dateemission);
    printf("\n date expiration:");
    scanf("%s",&c.dateexpiration);
    fprintf(fich,"%s\n",c.dateexpiration);
    printf("\n CVV:");
    scanf("%s",&c.CVV);
    fprintf(fich,"%s\n",c.CVV);
    printf("\n Type:");
    scanf("%s",&c.Type);
    fprintf(fich,"%s\n",c.Type);
    printf("\n Banque emettrice:");
    scanf("%s",&c.Banqueemettrice);
    fprintf(fich,"%s\n",c.Banqueemettrice);
    printf("\n Reseau:");
    scanf("%s",&c.Reseau);
    fprintf(fich,"%s\n",c.Reseau);
    printf("\n date naissance:");
    scanf("%s",&c.datenaissance);
    fprintf(fich,"%s\n",c.datenaissance);
    printf("\n citoyennete:");
    scanf("%s",&c.citoyennete);
    fprintf(fich,"%s\n",c.citoyennete);
    printf("\n adresse:");
    scanf("%s",&c.adresse);
    fprintf(fich,"%s\n",c.adresse);
    printf("\n numero compte:");
    scanf("%s",&c.numerocompte);
    fprintf(fich,"%s\n",c.numerocompte);
    printf("\n Email:");
    scanf("%s",&c.Email);
    fprintf(fich,"%s\n",c.Email);
    printf("\n Telephone:");
    scanf("%s",&c.Telephone);
    fprintf(fich,"%s\n",c.Telephone);
    printf("\n numero PIN:");
    scanf("%s",&c.numeroPIN);
    fprintf(fich,"%s\n",c.numeroPIN);
    printf("\n Balance carte:");
    scanf("%s",&c.Balancecarte);
    fprintf(fich,"%s\n",c.Balancecarte);

     return 0;
 }
}
}

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2016 à 8:59:26

Ma solution:

def luhn_algorithm(number):
    number = reversed(str(number))
    gen_nb = (int(nb)*2 if ind%2 else int(nb) for ind, nb in enumerate(number))
    sum_nb = sum(nb if nb < 10 else (nb%10 + nb//10) for nb in gen_nb)
    return not sum_nb%10


#VRAI
print(luhn_algorithm(8763))
print(luhn_algorithm(543215))

#FAUX
print(luhn_algorithm(543210))
print(luhn_algorithm(1111))


Testé avec les nombres de wiki et ma carte bleue (c'est confirmé, ma banque ne m'en a pas filé une fausse :soleil:)

  • Partager sur Facebook
  • Partager sur Twitter
Précepte: Le mieux est l'ennemi du bien
21 octobre 2020 à 16:29:57

Bonjour, j'ai besoin d'aide pour un devoir de snt sur python: Une carte bancaire est associée au code 1234. Ecrire un programme permettant de bloquer la carte bancaire au bout de trois essais sans utiliser de boucle.
  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2020 à 16:34:43

@EvaDurin: créés un nouveau sujet avec ton problème plutôt que de déterrer un sujet datant de 4 ans et profites en aussi pour nous mettre un début de code de ce que tu as fait.
  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2020 à 16:39:19

Je veux bien mais je sais pas comment faire un nouveau sujet ?
  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2020 à 16:41:11

Bonjour,

sur la page du forum "Langage Python", sous le titre, il y a la pagination à gauche et à droite un bouton pour créer un nouveau sujet. Il renvoie vers le bas de la page, avec un formulaire prêt à être rempli.

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)