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 :

Probl�me de math�matiques


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Avril 2015
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par d�faut Probl�me de math�matiques
    Bonjour � tous,

    Pour commencer, je suis sur python2.7 et Windows 10. Je pr�cise ne pas �tre un expert en python, mais je trouve cet outil vraiment passionnant.
    J'ai donc un fichier texte qui se pr�sente comme ceci:

    1 2 1 3 2 3 4 2 4 5 2 5 3 2 3 4 2 4 6 7 6 8 7 8 5 2 5 8 2 8 5 7 5 4 7 4 2 6 2 8 6 8 7 5 7 8 5 8 7 3 7 4 3 4 1 6 1 2 6 2 3 6 3 1 6 1 3 7 3 6 7 6

    Mon but est de savoir si il y a des doublons normal ou invers�s dans cette suite en regroupant les nombres deux par deux. Je m'explique, en prenant les 7 premiers termes regroup�s par exemple, on a 12, 13, 23, 42, 45, 25 et 32, or, pour moi, 23 est identique � 32, je souhaiterai donc supprimer le terme 32.

    J'ai cod� ceci :
    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
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    contenu = open("E:\Desktop\ScriptPython\Reducemesh\POBJ\Granulat1-8.txt", "r").read()
    contenu = contenu.split("z")
     
    fichier = open('E:\Desktop\ScriptPython\Reducemesh\POBJ\Granulat1-9.txt', 'w')
     
    # 71 contenu en tout
    k=0
    for j in range (0, 68-k): # contenu 70 et 71 auront deja ete verifie en fin de chaine
            for i in range (2, 70-k-j): #permet de reduire l'intervalle en fonction que 'j' grandit
                    if contenu[j]+contenu[j+1] == contenu[j+i]+contenu[j+(i+1)]:
                            del contenu[j+i]
                            del contenu[j+i]
                            k=k+2 #reduit l'intervalle a chaque contenu supprime
     
                    elif contenu[j+1]+contenu[j] == contenu[j+i]+contenu[j+(i+1)]:
                            del contenu[j+i]
                            del contenu[j+i]
                            k=k+2
     
                    elif contenu[j]+contenu[j+1] == contenu[j+(i+1)]+contenu[j+i]:
                            del contenu[j+i]
                            del contenu[j+i]
                            k=k+2
     
                    elif contenu[j+1]+contenu[j] == contenu[j+(i+1)]+contenu[j+i]:
                            del contenu[j+i]
                            del contenu[j+i]
                            k=k+2
     
            i=i+2
    j=j+2
     
    print contenu
    J'ai donc �videment l'erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    "if contenu[j]+contenu[j+1] == contenu[j+i]+contenu[j+(i+1)]:
    IndexError: list index out of range"
    Pour le coup je suis un peu bloqu�, en plus, je me suis lanc� dans quelque-chose d'assez complexe en traitant chaque nombre comme un contenu.
    Quelqu'un aurait-il une id�e?

    Merci par avance.

    Ben

  2. #2
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Salut,

    Ben pour parcourir une liste 2 par 2, il faut regarder dans les d�tails de la fonction range:
    Si L est votre liste, essayez voir:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    >>> for x in range(0, len(L), 2):
    ...     print(L[x:x+2])
    ...
    Apr�s pour rendre �gaux 1, 2 et 2, 1, vous disposez des objets "set":
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> s = set(L[0: 2 ])
    >>> s
    set(['1', '2'])
    >>> s = set(['2', '1'])
    >>> s = set(L[0: 2 ])
    >>> s == set(['2', '1'])
    True
    >>> s == set(['3', '1'])
    False
    Ca c'est pour les id�es, les d�tails sont dans les tutos.

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

Discussions similaires

  1. probl�me morphologie math�matique
    Par scorpzak25 dans le forum Traitement d'images
    R�ponses: 2
    Dernier message: 20/04/2014, 19h27
  2. [Batch] Probl�me op�ration math�matique
    Par nekcorp dans le forum Scripts/Batch
    R�ponses: 5
    Dernier message: 11/11/2012, 20h05
  3. Probl�me morphologie math�matique
    Par kaiseresis dans le forum Images
    R�ponses: 1
    Dernier message: 18/06/2008, 13h41
  4. Probl�me de math�matique
    Par Xh�ras dans le forum C++
    R�ponses: 4
    Dernier message: 18/07/2007, 17h01
  5. Probl�me math�matique
    Par Appwal dans le forum Math�matiques
    R�ponses: 22
    Dernier message: 13/05/2006, 18h06

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