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 :

[Projet solveur SAT] Débuter avec python.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut [Projet solveur SAT] Débuter avec python.
    Bonjour à tous.

    Je suis en train de réaliser un solveur SAT en Python. J'ai choisi ce langage parce que je ne le connaissais pas et que c'était l’occasion de l'apprendre. Mais vu que c'est un nouveau langage pour moi, j'ouvre ce topic pour mes questions de débutants.

    N'hésiter pas à me conseiller d'autre façon de faire (tant sur la syntaxe que sur l'algorithmique lorsque je posterai du code) et de me dire comment faire au mieux.

    1. Alors pour commencer, je n'arrive pas à copier un itérateur. J'ai essayer tout et n'importe quoi (v = iter(a), copy.copy(v), puis new(v), copy(v) et j'en passe des meilleurs). Comment faire ? [Résolu, solution : tee()]
    2. J'ai un fichier avec une formule et pour le moment, l'intégralité de la formule est copié dans une variable que je parcours avec l'itérateur. Je dois aller en avant et parfois revenir en arrière (j'ai appris que les itérateurs ne pouvaient pas aller en sens inverse dans Python, pour autant qu'on ne l'implémente pas. D'où mon désir de "sauvegarder" l'itérateur à la question 1. De plus n'y a t'il pas d'autre moyen d'optimiser l'accès au fichier avec un itérateur sans passer par la variable temporaire contenant la formule ?
    3. Ensuite, j'ai 3 fichiers (main.py, a.py, constants.py), main.py inclu a.py et a.py inclu constants.py. Malgré tout, a.py ne peut pas utiliser les constantes déclarées dans constants.py (simplement de la forme A=1). J'ai essayé d'inclure avec import constants ou encore from constants import *. Sans succès. edit
      Solution



    Merci beaucoup pour votre aide.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> liste = [12, 5, 9]
    >>> liste, copy_liste = iter(liste), iter(liste)
    >>> liste
    <list_iterator object at 0x02F1F6D0>
    >>> copy_liste
    <list_iterator object at 0x02F54890>
    2)

    Si on peut revenir en arrière avec les indices

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> liste = [12, 5, 9]
    >>> for i, j in enumerate(liste):
    	if i != 0:
    		print(liste[i-1])
     
     
    12
    5
    3)

    Si constants.py inclus tous les autres modules, vous n'incluez logiquement pas constants.py dans a.py par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from a import *
     
    print(var_du_module_a)

  3. #3
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Merci pour votre réponse. Je me suis très certainement mal exprimé mais je n'ai pas trouvé de solutions dans votre message.

    1) En fait je veux copier un itérateur à partir d'un itérateur.

    2) C'est des indices donc pas un itérateur à proprement parler il me semble ? Je dispose juste d'une variable "a" qui est un itérateur sur un objet (à la limite on ne sait pas lequel).

    3) constants.py n'inclus aucun fichiers. En fait, Main.py inclus a.py qui inclus constants.py. Et dans a.py, je ne peux pas accéder aux variables déclarées dans constants.py.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    1) ça change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iterator = iter(liste)
    iterator_copy = iterator
    2) Ok, là ton problème peut se résoudre à l'aide d'un itérateur bidirectionnel

    Voir doc officielle

    3)
    constants.py n'inclus aucun fichiers. En fait, Main.py inclus a.py qui inclus constants.py. Et dans a.py, je ne peux pas accéder aux variables déclarées dans constants.py.
    Bizarre

  5. #5
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    1) Malheureusement mes tests n'indiquent pas ce comportement, je pense que l'opérateur "=" fait une copie "par référence" (si c'est le terme utilisé dans le jargon Pÿthon). Preuve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    v = "A"
    a = iter(v)
    b = a
    c = a.next()
    print b.next()
    et le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          print b.next()
    StopIteration
    Ce qui veut dire que l'incrémentation de l'itérateur "a" à également incrémenté "b".

    2) L'itérateur que vous me montrez dans la doc permet de parcourir la séquence en sens inverse. Ce n'est pas bidirectionnelle vu qu'on ne peut pas faire de .next(), puis l'instant d'après revenir sur nos pas. (Ou alors je n'ai pas compris l'exemple).

    3)

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    2) L'itérateur que vous me montrez dans la doc permet de parcourir la séquence en sens inverse. Ce n'est pas bidirectionnelle vu qu'on ne peut pas faire de .next(), puis l'instant d'après revenir sur nos pas. (Ou alors je n'ai pas compris l'exemple).
    euh... là faut me donner un exemple car je suis perdu, à part avec l'indexation, je ne vois pas comment tu pourrais revenir en arrière.

    Après tu as la possibilté de parcourir une liste de façon circulaire, mais je ne pense pas que se soit cela que tu souhaites.

    1) Malheureusement mes tests n'indiquent pas ce comportement, je pense que l'opérateur "=" fait une copie "par référence" (si c'est le terme utilisé dans le jargon Pÿthon). Preuve :
    Le module itertools et la méthode tee() vous permettra de créer le nombre d'itérateur que vous souhaitez si j'ai bien compris.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. projet avec python
    Par chilo113 dans le forum Général Python
    Réponses: 1
    Dernier message: 01/12/2013, 23h27
  2. [1.x] débuter avec un projet symfony avec Xampp
    Par safa.nasich dans le forum Symfony
    Réponses: 4
    Dernier message: 28/06/2011, 20h17
  3. Projet de simulation avec python
    Par Sam-e dans le forum Programmation multimédia/Jeux
    Réponses: 2
    Dernier message: 10/03/2011, 10h47
  4. [Plugin]Lancement d'un projet JSP sous Eclipse avec Tomcat
    Par samios dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 25/08/2004, 18h03
  5. Débuter avec Java
    Par reptils dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 11/07/2004, 21h26

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