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 :

demande d'aide sur la syntaxe


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 27
    Points : 20
    Points
    20
    Par défaut demande d'aide sur la syntaxe
    bonjour, bonsoir à toutes et tous.
    je suis un débutant sous python, et je suis actuellement un tutos pour python 2.6

    dans ce tutos il y a pleins d'exercice cependant l'un deux (en fait c'est pas vraiment le seul) me pose problème. En fait pour etre exact il a soulevé une interrogation que je n'arrive pas a comprendre.

    voici mon probleme:
    je travaille sur une liste et je desire comparer les valeurs. je me suis heurté à un résultat un peu étrange pour moi.
    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    i=1
    liste = [1,2,3]
    x=liste[i]
    y=liste[2]
     
    print "i= ",i
    print "x= ",x
    print "y= ",y
     
    if x>y:
        print "ok"
    else:
        i=i+1
        print x
    ce qui m'intrigue c'est que x (qui selon moi doit dependre de i) devrait etre egale a 3 au lieu de 2. pourriez vous m'indiquer ou je fais mon erreur. bien sur mon souci est resolu si je remplace les variables x par liste[i] dans les print mais bon...

    merci de votre aide, et n'hesitez pas si je n'ai pas ete clair.

  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
    Non, ça ne marche pas comme ça

    quand tu fais x=liste[i], tu assignes à x la valeur d’un élément donné de liste, et c’est tout. Aucun lien n’est conservé entre x et la liste elle-même, donc modifier i par la suite n’a strictement aucun effet sur x.

    D’ailleurs, je ne vois pas pourquoi utiliser liste[i] (qui est la méthode canonique) te pose problème ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    non, je ne suis pas contrariant, juste de vieux reflexe d'autres langages.
    et bien merci pour cette reponse ^^ à très bientot!

  4. #4
    Membre averti Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Points : 390
    Points
    390
    Par défaut
    Citation Envoyé par ivigu Voir le message
    ..., juste de vieux reflexe d'autres langages.
    Je suis également pollué par d'autres langages. Et en plus j'ai abordé python uniquement dans l'optique de produire rapidement de l'outillage efficace (et je ne suis pas déçu). Le problème c'est que ne pas se pencher sur le moteur est jouable la plupart du temps, mais ouvre la porte à des bugs vicieux. Petit exercice:
    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
    liste = [1,2,3]
    liste1 = liste
    liste2 = [elem for elem in liste]
    print liste, liste1, liste2
    liste[:] = 15, 25, 35
    print liste, liste1, liste2
    liste = [10, 20, 30]
    print liste, liste1, liste2
     
    i = 12
    dico = {'un':12, 'deux':i, 'trois':liste}
    print dico
    liste[0] = 100
    i = 120
    print dico
    liste= []
    print dico
    Prévoir la sortie, faire tourner, expliquer la sortie si par la plus grand des hasards elle était différente de la prévision.
    Contexte de bug: vous copiez un dictionnaire de paramètres. Les valeurs en sont des données immédiates (littéraux) ou des variables de type simple. Tout va bien. Un jour vous changer un paramètre, il devient un type complexe. Et là apparait une liaison peut-être inattendue entre le dictionnaire d'origine et le dictionnaire copié.

  5. #5
    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
    Héhé, bravo, très joli petit test pour vérifier qu’on a bien saisi le truc…

    100% pour moi, mais je suis sûr qu’il y a pas longtemps encore je me serais fait piéger quelque part

    Ce mix copie par valeur (pour les immutable)/copie par référence (pour les mutables) est à mon avis un des plus gros points noirs du serpent… Surtout pour un débutant*!

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

Discussions similaires

  1. Besoin d'aide sur une syntaxe
    Par arnolem dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/08/2006, 12h38
  2. Demande d'aide sur les regexp
    Par Uld dans le forum Langage
    Réponses: 1
    Dernier message: 18/08/2006, 22h15
  3. [VB6] Demande d'aide sur un programme !
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/06/2006, 11h49
  4. Demande d'aide sur XPDL (XML Process Definition Language)
    Par Bebert71 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/02/2006, 09h23
  5. demande d'aide sur samba
    Par marcoss dans le forum Développement
    Réponses: 5
    Dernier message: 04/12/2003, 19h38

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