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 :

petit exo python


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut petit exo python
    Bonjour,

    Je voudrais écrire une boucle dans laquelle se trouve une variable qui prendra toutes les chaines de caractères de moins de 16 caractères.

    Ex:
    tour 1: \x00
    tour 2: \x01
    ...

    tour 257: \x01\x00

    ect...

    Je ne sais pas comment "incrémenter" les caractères ainsi que leur nombre.
    Merci à vous pour votre aide.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Une version basique peut être d’itérer sur tous les nombres de 0 à 2^(8*16) (soit quelque chose comme 340 milliards de milliards de milliards de milliards de combinaisons ) –*autant dire que t’es pas près d’en voir le bout (et que t’as probablement pas non plus sur la terre entière suffisamment de disques durs pour stocker les résultats)…

    Bref, pour la beauté du code (py3)*:

    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
    def int8_to_bytes(int8):
        """
        Return a bytes string made from the given sequence of [0..255] integers.
        """
        # XXX Why in hell python does not feature such conversion???
        # XXX Just ignores ints out of bounds.
        hex_s = "".join(("{:0>2x}".format(i) for i in int8 if 0 <= i <= 255))
        return bytes.fromhex(hex_s)
     
    def gen_nbits(n):
        yield(int8_to_bytes((0,)))
        for i in range(1, 2**n):
            # Note that this will give us lsb first, so we’ll have to reverse that list at the end.
            res = []
            next = i
            while next:
                res.append(next % 256)
                next //= 256
            yield(int8_to_bytes(reversed(res)))
     
    # Two bytes only! Don’t want to kill my computer!!
    for b in gen_nbits(16):
        print(b)

Discussions similaires

  1. Le Palindrome (petit exo)
    Par skulled dans le forum C
    Réponses: 12
    Dernier message: 16/01/2007, 23h13

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