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 :

Qrcode via liste binaire


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Qrcode via liste binaire
    Bonsoir (ou bonjour ^^ vue l'heur)
    j'ai un programme a faire pour mon bac blanc d'ISN qui consiste a renter un identifiant: nom/prénom/date de naissance
    à le convertir en décimal puis en binaire pour ensuite multiplier ma liste afin d'obtenir au moins 2500 caractères
    je dois ensuite utiliser cette liste pour créer une image où les 0 de la liste représenterons un pixel blanc et les 1 un pixel noir
    voila la 1er partie du programme qui donne la liste en binaire:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    # Créé par utilisateur, le 06/01/2016 en Python 3.2
     
     
    def liste1(id):                                                                  #Converstion d'un identifiant, en Ascii, en décimal (base 10).
     
        ascii=[ord(i) for i  in id]
        return ascii                                                                #Identifiant Stocké dans une liste, en mode décimal (base 10).
     
     
     
    def liste2(id):                                                                  #Convertion de la liste 1 (code 1), en une Liste 2 permettant de regrouper 2 indices en un autre indice. ((indice 1 * 45) + indice 2)
     
     
        Liste=[]                                                                    #Nouvelle liste (liste 2)
        nb=len(id)                                                                  #Determination du nombre d'indices dans la liste.
        ResteZ=nb//2                                                                #Cas ou le Nombre d'indice de la liste 1 est pair. Soit un reste de 0 (Z comme 0)
        ResteU=((nb-1) // 2)                                                        #Cas ou le Nombre d'indice de la liste 1 est inpair. Soit un reste de 1 (U comme 1)
        v = 0                                                                       #Variable 'v' (representant les différent indices de la liste 1)
     
        if nb%2 == 0 :                                                              #Cas ou le nombre d'indice est paire. Il reste 0 une fois regroupé par pair
     
            for i in range(ResteZ):                                                 #Boucle, du cas pair, permettant de regrouper les indices 2 par 2
     
               d = (id[v] * 45) + id[v+1]                                           #Implication de la variable pour modifier la liste
               Liste.append(d)                                                      #Stockage du nouvelle indice dans la liste 2
               v = v + 2                                                            #Changement d'indice
     
        else:                                                                       #Cas Impair, permettant de regrouper les indices 2 par 2
            for i in range(ResteU):                                                 #Boucle, du cas inpair.
                d = ((id[v] * 45) + id[v+1])                                        #Implication de la variable pour modifier la liste
                Liste.append(d)                                                     #Stockage du nouvelle indice dans la liste 2
                v = v + 2
        Liste.append(id[-1])                                                        #Stockage de l'indice seul, dans la liste 2 (cas impair)
        return Liste                                                                #Retour de la liste
     
    #PROGRAMME
     
    ID = input("Votre: 'NOM' 'Prénom' Date de naissance: 'JJ/MM/AAAA' ")             #Demande de Saisi du 'NOM' 'Prénom' Date de naissance :'JJ/MM/AAAA'
    x = liste1(ID)                                                                   #Utilisation de la fonction liste1
    x = liste2(x)                                                                   #Utilisation de la fonction liste2
    print(x)
     
    if len(ID)%2!= 0:
            z=(format((x[-1]),'08b'))
     
    liste=[]
    liste2=[]
    liste3=[]
    for car in x:
     
        if car%2 == 0:
            liste2.append(format((car), "13b"))                                     # convertie chaque caractères en binaires sur 13bits
     
        else:
            liste2.append(format((car), "013b"))
                                                                                    # convertie chaque caractères en binaires sur 13bits
    liste2[-1]=z
    print(liste2)
    y=(",".join(liste2))
    print(y)
    for car in str(y):
        if car!=",":
            if car!=" ":
                liste3.append(int(car))
    print(liste3)
    print(len(liste3))
    liste4=(liste3*11)
    print(liste4)
    print(len(liste4))
    mais ensuit je ne vois pas comment faire pour lire ma liste afin que 0 traduise un pixel blanc et 1 un noir
    j'ai commencer par créer une image mais après avec (img.putpixel((y,x),p)) je ne vois pas comment changer les pixel de mon image
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Il faudrait que tu nous dises quelle librairie tu utilises pour créer ton image !!! Mais dans l'absolu, un pixel se définit par 3 composantes rouge, vert, bleu avec chaque composante sur 256 valeurs ce qui donne 16777216 possibilités qui permettent d'obtenir toutes les couleurs de la gamme en allant de 0 0 0 (noir) jusqu'à 255 255 255 (blanc)
    Donc quand tu as 0 tu mets tes 3 composantes à 255 et quand tu as 1 tu mets tes 3 composantes à 0 et t'auras tes pixels.

    Sinon pour ton code c'est une horreur. Une fonction "liste1", une autre "liste2", plus bas dans le code un tableau "liste2", tu calcules une variable "resteU" et une autre "resteZ" mais ensuite tu n'en utilises qu'une seule selon le cas... ça sent immédiatement le manque de réflexion (partir au hasard en découvrant ce qui t'attend à chaque pas que tu fais).

    Donc pose toi, établis ton algo, pense alors aux fonctions et à ce qu'elles doivent faire pour leur donner un nom parlant ainsi qu'à tes variables.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    je sais que c'est vraiment pas optimiser... , mais la personne avec qui je le fait avait du mal avec sa partie j'ai donc du essayer de faire la sienne aussi pour la faire correspondre avec la mienne ( les histoire de reste c'est lui)
    Et je vais pas te mentir mon bac blanc est demain, j'ai passé beaucoup de temps cette semaine sur le programme, au point ou la moindre solution qui marchais, je la prenais. j’essayerai de voir se que je peut améliorer avant demain.

    Sinon pour ce qui est de la librairie ça doit être PIL je pense, j'ai fait un petit programme pour tester le changement de pixel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from PIL import Image
    img = Image.new('1', (50, 50))
    img.save('Flash_code.jpeg', 'JPEG')
     
    large,haut=img.size
    img1=Image.new("RGB" ,(50,50))
    x=12
    y=42
    p=(255,255,255)
    img1.putpixel((y,x),p)
     
    img1.show()
    pour les valeur RGB 0 et 255 j'avais trouvé, c'est juste que je ne voit pas comment lire ma liste de bits en affectant a 0 le blanc et 1 le noir :/

Discussions similaires

  1. [E-03] Image via liste déroulante.
    Par Blop le bricoleur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/10/2008, 09h05
  2. [formulaire]mode edition via liste deroulante
    Par profane dans le forum IHM
    Réponses: 1
    Dernier message: 20/04/2007, 15h57
  3. Réponses: 4
    Dernier message: 04/04/2007, 18h41
  4. Passer paramètres via liste déroulante
    Par Jiraiya42 dans le forum Langage
    Réponses: 8
    Dernier message: 01/04/2007, 11h15
  5. changement d'enregistrement via liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2005, 18h47

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