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 :

soustraction d'octets


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Par défaut soustraction d'octets
    Bonsoir,
    J'ai un programme qui calcule le nombre d'octets et de paquets et j'ai mis le résultat dans une liste "octet[]" et je veux faire la soustraction entre le dernier élément et l'avant dernier " octet[i+1] - octet[i] " mais je ne sais pas qu'est qu'il manque, pourriez vous m'aider SVP ??
    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
     
    def _handle_flowstats_received (event):
           stats = flow_stats_to_list(event.stats)
           log.debug("FlowStatsReceived from %s: %s",dpidToStr(event.connection.dpid), stats)
     
           nb_octets= 0
           nb_packets = 0
           octet = []
     
           #i=0
     
     
           for f in event.stats:
            if f.match.dl_type==0x0800:
     
                nb_octets += f.byte_count
                nb_packets += f.packet_count
                octet.append(nb_octets)
                print(octet) 
                print "nombre des octets =",nb_octets, "octet"
                print "nombre des paquets =",nb_packets, "paquet"
     
                for i in range(len(octet)):
     
                   print(i, octet[i])
                  # 
                   if octet[i+1]-octet[i] > 5: 
                     print ("----")
    le problème est la : if octet[i+1]-octet[i] > 5:
    print ("----")

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Par défaut
    Bonjour,

    Il manque des infos pour pouvoir vous aidez, qu'est-ce qui ne fonctionne pas? Qu'est-ce que vous obtenez en sortie? Est-ce qu'il y a une erreur dans le code qui le fait planter?

  3. #3
    Membre averti
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Par défaut
    Bonjour,
    voici le type d'erreur le calcule marche, le problème est dans la soustraction


    Nom : 2017-05-16_095909.jpg
Affichages : 301
Taille : 49,4 Ko

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Par défaut
    Ok, hum, est-ce que vous pourriez m'envoyer un jeu de donnée que je test le code? Par exemple la liste "octet" rempli avec les données que vous récupérer?

    Edit : Ah, my bad, l'image ne s'affichait pas.

    Le soucis viens que vous faites votre boucle :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in range(len(octet)):

    Dans la boucle :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    for f in event.stats:

    Votre deuxième boucle doit être hors de la première sinon il est normal que ça plante.

    Pour l'explication, dans votre première boucle, vous ajoutez un objet à la liste "octet" puis vous arrivez dans la seconde boucle et là vous essayez de lire les index I et I+1, le soucis c'est que vous n'avez qu'un objet d'index 0 dans une liste de taille 1. Donc avec votre algo vous allez essayer de lire les objets à l'index 0, qui va fonctionner, et à l'index 1 , qui n'existe pas, votre code plante donc logiquement. Le soucis restera pour la dernière occurrence de votre liste même si vous la sortez de la première boucle for d'ailleurs.

    Voilà plus ce qu'il faudrait faire :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in range(len(octet)-1):
        print(i, octet[i])
        if octet[i+1]-octet[i] > 5: 
            print ("----")

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par sarah sarita Voir le message
    voici le type d'erreur le calcule marche, le problème est dans la soustraction
    Si ça dit IndexError, le problème n'est pas dans la soustraction mais dans le i+1 et donc dans la définition des bornes de votre boucle "for".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Par défaut
    Merci a vous tous, C bon ça marche maintenant avec votre solution @Takka,Aussi j'ai corrigé mon script j'ai mis la déclaration de la liste avant la fonction, mais maintenant je veux faire un teste si la valeur l'avant dernière de la liste - la dernière > 50 : print(''-----'') , et non pas tous les valeurs de la liste octet[i+1]-octet[i] , c possible ??

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Par défaut
    Oui il suffit, hors de la boucle, d'utiliser le dernier index (-1) et l'avant dernier index (-2) de la liste.

Discussions similaires

  1. Soustraction d'ensembles
    Par Guizz dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 05/05/2006, 12h37
  2. recv() et nombre d'octets lus...
    Par Gogoye dans le forum Réseau
    Réponses: 5
    Dernier message: 02/12/2003, 14h37
  3. Octets recus et envoyés pour une connection
    Par portu dans le forum Web & réseau
    Réponses: 8
    Dernier message: 18/11/2003, 12h43
  4. [Kylix] stockage d'un tableau d'octets dans interbase
    Par georges1001 dans le forum EDI
    Réponses: 1
    Dernier message: 16/09/2003, 14h14
  5. Existe-t'il un type tenant sur 2 octets ?
    Par benj63 dans le forum C++Builder
    Réponses: 13
    Dernier message: 20/06/2002, 17h03

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