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 :

Comprendre un morceau de code python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut Comprendre un morceau de code python
    Bonjour,
    je suis débutant et
    je voudrais comprendre ce que la variable tens, units obtiennent comme valeur de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i=int(sys.argv[1])
    tens = ((i % 100) // 10)*10                                                                         # ?
    units = (i % 10)                                                                                    # ?
    print(tens, units)
    et aussi pourquoi att>9 et ce que la variable temp comprend :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def Pin_init_affichage(att):            #Handeling of the process that take care of the led system on the front side
        t=0
        print("############### Pin order ############### ")
        for t in range (0,5):
            temp = att                                                                                  # ?
            if (att>9):                                                                                 # ?
                temp = ((i % 100) // 10) + 9                                                            # ?
                print("In led list get the x th --------> " + str (temp))
     
            print(Main_List[temp][t])
    MERCI de votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par DoctorOliver Voir le message
    je suis débutant et je voudrais comprendre ce que la variable tens, units obtiennent comme valeur de ce code :
    Etre débutant t'empêche-t-il de lire les tutos pour apprendre les opérations élémentaires? Etre débutant t'empêche-t-il de prendre un papier et faire les opérations ?
    Si "i" vaut 123, "ten" récupère 20 et "units" récupère 3.

    Citation Envoyé par DoctorOliver Voir le message
    et aussi pourquoi att>9
    Une vague corrélation avec un système décisionnaire permettant de repérer les nombres inférieurs (ou égaux) à 9 (donc à un chiffre) par rapport à ceux qui ne le sont pas peut-être ?

    Citation Envoyé par DoctorOliver Voir le message
    et ce que la variable temp comprend
    Même réponse => prends un papier, ou une calculatrice, ou un Python, et tape les opérations. Surtout que tu avais déjà posé la question. Tu ne sembles pas très vif du neurone...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    je prends un papier et un crayon .

    dejà vous m'avez apporté une grande aide

    Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par DoctorOliver Voir le message
    je voudrais comprendre ce que la variable tens, units obtiennent comme valeur de ce code
    Si la personne qui a écrit ce code a de la suite dans les idées, tens semble être le chiffre des dizaines, alors qu'units serait le chiffre des unités. C'est une hypothèse que vous pouvez tester avec quelques valeurs ou démontrer (c'est des maths... pour autant que vous sachiez un peu à quoi correspondent les opérations %, //, *,... qui sont dans tous les tutos).

    Citation Envoyé par DoctorOliver Voir le message
    et aussi pourquoi att>9 et ce que la variable temp comprend :
    Celui qui a écrit ce code l'a fait pour résoudre un problème. Et comme on ne sait pas trop lequel, à quoi peut servir ce code? Aucune idée.

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

  5. #5
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    avec l'exemple de 123 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tens = ((i % 100) // 10)*10                                                                         
    units = (i % 10)
    tens 123%100= reste 23
    23 // 10 = 2.3
    pourquoi remultiplier par 10 ? le résultat 2.3 *10 = 23

    units = 123%10 = reste 3 (fonctionne très bien pour les unités)

    Par contre pour les tens le résultat ne devrait il pas être 1 ?



    pour la valeur de temp : je prend i allant de 0 à 5 soit 0, 1, 2, 3, 4 et 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for t in range (0,5):
            temp = att                                                                                  
            if (att>9):                                                                                 
                temp = ((i % 100) // 10) + 9                                                            
                print("In led list get the x th --------> " + str (temp))
    Je trouve comme résultat : 9.001 , 9.002, 9.003, 9.004 et 9.005

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par DoctorOliver Voir le message
    Par contre pour les tens le résultat ne devrait il pas être 1 ?
    C'est 2 quelque chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> i = 123
    >>> tens = ((i % 100) // 10)*10
    >>> units = (i % 10)
    >>> tens, units
    (20, 3)
    Si vous faites une théorie sur ce que le code fait et que les faits la contredisent, c'est que votre théorie est fausse et que vous devez en changer (car le code n'a pas d'opinion: il fait juste ce pour quoi il a été écrit -- pour autant qu'on connaisse l'intention de départ).

    Citation Envoyé par DoctorOliver Voir le message
    Je trouve comme résultat : 9.001 , 9.002, 9.003, 9.004 et 9.005
    Quel résultat? Si c'est la valeur de temp, ce doit être un entier...

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

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DoctorOliver Voir le message
    avec l'exemple de 123 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tens = ((i % 100) // 10)*10                                                                         
    units = (i % 10)
    tens 123%100= reste 23
    23 // 10 = 2.3
    pourquoi remultiplier par 10 ? le résultat 2.3 *10 = 23
    Parce que 23 // 10 ne donne pas 2.3 mais 2 (division euclidienne). Donc pour 123 ça donne au final 20 (car 123 c'est cent vingt-trois)

    Citation Envoyé par DoctorOliver Voir le message
    pour la valeur de temp : je prend i allant de 0 à 5 soit 0, 1, 2, 3, 4 et 5
    Alors déjà c'est seulement de 0 à 4 car la borne finale n'est pas incluse par le range() ; et ensuite c'est "t", pas "i"...

    Citation Envoyé par DoctorOliver Voir le message
    Je trouve comme résultat : 9.001 , 9.002, 9.003, 9.004 et 9.005
    Bon ben voilà, aux erreurs près t'as ta réponse, problème résolu.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    C'est presque résolu !

    Je ne comprends pas ce que fait ce code dans l'ensemble ? sa fonctionnalité ? peut être parce que je ne comprends pas bien ce que la variable att va prendre comme paramètre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def Pin_init_affichage(att):            #Handeling of the process that take care of the led system on the front side
        t=0
        print("############### Pin order ############### ")
        for t in range (0,5):
            temp = att                                                                                  
            if (att>9):                                                                                 
                temp = ((i % 100) // 10) + 9                                                            
                print("In led list get the x th --------> " + str (temp))
     
            print(Main_List[temp][t])

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par DoctorOliver Voir le message
    peut être parce que je ne comprends pas bien ce que la variable att va prendre comme paramètre ?
    Une fonction comme Pin_init_affichage peut avoir un paramètre, mais une variable n'a pas de paramètre...
    Elle peut juste être d'un type donné (un entier) et varier entre certaines valeurs (sinon ça va planter).

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

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DoctorOliver Voir le message
    Je ne comprends pas ce que fait ce code dans l'ensemble ?
    A priori une boucle de 0 à 4. Dans la boucle il fait un test con (con parce que le test ne dépendant pas de la variable de la boucle, il ne changera pas d'état durant la boucle donc il est fait 4 fois pour rien).

    Citation Envoyé par DoctorOliver Voir le message
    sa fonctionnalité ?
    Afficher 5 valeurs calculées

    Citation Envoyé par DoctorOliver Voir le message
    peut être parce que je ne comprends pas bien ce que la variable att va prendre comme paramètre ?
    C'est justement le principe d'un paramètre => pouvoir être choisi par l'appelant !!!
    Si j'écris def carre2(): return 4 ok ça marche mais c'est pas super souple. Si maintenant j'écris def carre(n): return n**2 c'est plus souple mais plus abstrait.

    Mais c'est surtout parce que c'est un code de merde. Oui je sais il a été écrit par un 4° année d'école d'ingénieur mais ça n'empêche pas. Déjà ce test inutile dont j'ai parlé mais surtout il fait appel à des variables situées hors de la fonction (i, MainList) ce qui déjà casse la notion d'indépendance d'une fonction (sauf cas très particulier, une fonction doit pouvoir être utilisable n'importe où) et justement empêche de prévoir son déroulement.
    Mais au fait, pourquoi tu ne vas pas poser la question à ce fameux 4° année justement ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Comprendre un morceau de code python
    Par DoctorOliver dans le forum Général Python
    Réponses: 9
    Dernier message: 03/06/2022, 20h08
  2. comprendre une partie de code
    Par menuge dans le forum Langage
    Réponses: 24
    Dernier message: 03/09/2006, 20h44
  3. Aide pour comprendre et modifier un code
    Par metal85 dans le forum Assembleur
    Réponses: 1
    Dernier message: 06/08/2006, 09h47
  4. Réponses: 12
    Dernier message: 08/02/2005, 23h42
  5. [JSP] [include] inclure un morceau de code
    Par viena dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/01/2005, 11h51

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