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 :

tour de magie ? [Python 3.X]


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité defense
    Inscrit en
    Janvier 2024
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité defense
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 27
    Points : 17
    Points
    17
    Par défaut tour de magie ?
    hello
    j ai installe ce bout de code
    Etonnamment il ne me donne pas le résultat attendu
    magie : resultat = resultat+1

    j ai encadre les lignes de print mais je ne comprend pas ...

    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
     
     
    import tkinter as tk
     
    root = tk.Tk()
    root.geometry("400x240")
     
    #---------------------------------------
    def getTextInput():
        result = textExample.get("1.0", "end")
        print(result)
        long = len(result)
        print(long)
        print("Longueur de la chaine = " + str(long) +" caracteres")
        print(result)
     
    #===================================
    textExample = tk.Text(root, height=10)
    textExample.pack()
    #-------------------------------------
    btnRead = tk.Button(root, height=1, width=10, text="Read",
                        command=getTextInput)
    btnRead.pack()
    #_______________________________
    root.mainloop()

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    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 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par RAMEX Voir le message
    mais je ne comprends pas ...
    print("[%s]" % result)
    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 à l'essai
    Homme Profil pro
    retraité defense
    Inscrit en
    Janvier 2024
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité defense
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 27
    Points : 17
    Points
    17
    Par défaut tour de magie
    merci
    vous pouvez expliciter

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    bonjour
    Citation Envoyé par RAMEX Voir le message
    vous pouvez expliciter
    lol, tu n'expliques même pas ton problème !

    et ton "resultat = resultat+1" c'est quoi ? puisque tu n'as rien d'équivalent dans ton code : tu utilises (str)result et (int)long

    ps: pourquoi extrêmement compliquer avec tk alors que tu sembles ne faire que des print() ...

    EDIT : moi, j'ai compris, que long retourne une valeur trop grande de 1 ????

    Citation Envoyé par Sve@r Voir le message
    print("[%s]" % result)
    ou simplement écrire ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(result, "a une taille de", long)
    $moi= ( !== ) ? : ;

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    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 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    vous pouvez expliciter
    Le caractère <return> qui termine toute ligne texte. C'est grâce à lui qu'un fichier texte est affiché bien proprement quand on l'ouvre avec un éditeur quelconque. Il a lui-aussi droit à son existence et à être comptabilisé.

    Citation Envoyé par papajoker Voir le message
    lol, tu n'expliques même pas ton problème !
    Chut, il ne faut pas le houspiller sinon il va te sortir qu'il n'est pas un étudiant qui fait des devoirs, qu'il est informaticien depuis 1980 et qu'on n'a pas de remarque à lui faire...
    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]

  6. #6
    Membre à l'essai
    Homme Profil pro
    retraité defense
    Inscrit en
    Janvier 2024
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité defense
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 27
    Points : 17
    Points
    17
    Par défaut magie
    bonsoir
    Apparemment vous n avez pas exécuté le script...

    l'explication me parait claire

    Si vous entrez 8 caractères, le programme en dénombre 9

    D'où mon expression de magie : result = result+1 !

    Mais je n'ai toujours pas l explication de votre script ;
    peut être pouvez vous m indiquer une source ou un site ou je pourrais
    compléter mon ignorance .

    NB pour qui de droit : j'apprécie l'ironie polie , pas la condescendance, ni le mépris y compris
    pour les débutants, comme vous n'aimeriez pas non plus en faire l'objet.
    Je ne vois pas pourquoi je me ferais "houspiller" ? Par qui ?
    Sans doute votre supériorité en Python - que je ne met d'ailleurs pas en doute -
    vous dispense t'elle de toute remarque sur la manière dont vous vous exprimez ,
    et vous autorise a "houspiller" qui que ce soit . Le respect ca vous dit quelque chose ?
    J'accepte certes les remarques techniques, mais formulées avec respect .
    De ce fait votre Post a une valeur ajoutée nulle :
    Votre grandeur, bonne nuit.

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    D'où mon expression de magie : result = result+1 !
    Tu ne peux pas simplement écrire que tu trouves bizarre d'avoir une longueur de chaine trop grande d'un caractère ici dans ton pseudo code, result est une chaine et tu ajoutes un nombre à une chaine

    Puisque c'est la question ! La réponse t'a été donnée par Sve@r au message #5 (avec "une valeur ajoutée nulle"). Et en de la réponse, je ne parle même pas du code print("[%s]" % result) qui te donnait un très très bon aperçu visuel si l'explication n'était pas claire.

    Citation Envoyé par RAMEX Voir le message
    Apparemment vous n avez pas exécuté le script
    Je te retourne donc le compliment
    $moi= ( !== ) ? : ;

  8. #8
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    Comme dit par Sve@r le caractère de retour de ligne <return> est comptabilisé.
    Pour éviter cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = textExample.get("1.0", "end-1c")
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    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 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    Apparemment vous n avez pas exécuté le script...
    Le plus triste c'est que toi tu l'as exécuté mais tu ne t'es même pas interrogé sur cette ligne vide qui apparait juste en dessous du mot saisi et affiché lors du print(). En revanche il est clair que tu ne l'as pas corrigé et réessayé en utilisant ma version sinon tu aurais vu que le "]" s'affiche sur la ligne du dessous et tu ne serais pas revenu avec tes grands airs de prince outragé.

    Citation Envoyé par RAMEX Voir le message
    Si vous entrez 8 caractères, le programme en dénombre 9
    En dehors de se croire dans la peau d'un cracmol arrivé par erreur à Poudlard, l'hypothèse intelligente à se faire aurait été de se dire qu'il y en a réellement 9. De là il n'y avait plus qu'à chercher quel peut être ce neuvième et tenter des codes permettant de le montrer.

    Citation Envoyé par RAMEX Voir le message
    l'explication me parait claire
    La mienne, tout aussi sybilline que l'était ta question, me le paraît tout autant (et quelque chose me dit qu'elle l'est aussi pour les autres)

    Citation Envoyé par RAMEX Voir le message
    peut être pouvez vous m indiquer une source ou un site ou je pourrais compléter mon ignorance .
    La politesse élémentaire eût été au-moins de tester le code donné, en parallèle de lire ma prose et d'essayer d'en tirer des conclusions. Ou (à minima) de montrer que tu avais au-moins essayé.

    Citation Envoyé par RAMEX Voir le message
    NB pour qui de droit : j'apprécie l'ironie polie , pas la condescendance, ni le mépris y compris pour les débutants, comme vous n'aimeriez pas non plus en faire l'objet...
    Le respect ca vous dit quelque chose ?
    Tu n'as pas bien compris : ce n'est pas le débutant que tu es que je méprise, c'est le personnage tellement imbu de lui même qu'il n'a jamais fait l'effort de lire ce qu'on lui écrivait, considérant que nos écrits et le temps passé à les faire ne correspondaient pas à ce qu'on aurait dû lui produire. Le respect comme tu le dis ça se donne avant de le demander en retour. Tu peux regarder les autres topics, tous les autres topics, les vrais débutants, ceux qui savent qu'ils ont tout à apprendre et qui viennent donc sans idée préconçue, sont traités avec respect, tout comme tu l'as été à ton arrivée. Le premier a avoir manqué de respect à ce forum et à ses intervenants ça été ta première réponse. A partir de là, et voyant que ton attitude ne s'améliorait pas, je lui ai adaptée la mienne. Ce qui ne m'empêche toutefois pas de te donner quand-même de la vraie information correspondant réellement à ton problème, tout en me doutant que tu es trop vaniteux pour t'en rendre compte. Je sais que les autres lecteurs, eux apprécient fortement l'ironie de la situation.


    Citation Envoyé par RAMEX Voir le message
    De ce fait votre Post a une valeur ajoutée nulle :
    Absolument pas, il t'a donné un autre code. Mais bien entendu trop hautain pour penser que ce code pourrait être utile lui non plus tu ne l'as pas essayé. Sinon tu aurais vu que le reste de la phrase s'affiche en dessous du mot ce qui aurait pu peut-être aider à allumer quelques trucs dans ta tête. C'est ça le vrai respect, c'est faire l'effort de lire les réponses que l'on a demandées, même si elles ne sont pas celles que l'on espérait. Parce que là on se rend compte alors que bien souvent elles apportent beaucoup plus qu'une simple solution.
    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]

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 111
    Points : 1 616
    Points
    1 616
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    Apparemment vous n avez pas exécuté le script...
    Si le problème est explicitement décrit, souvent, avec de l'expérience, il n'y a pas forcément besoin d'exécuter le script.

    l'explication me parait claire
    non elle ne l'était pas

    Si vous entrez 8 caractères, le programme en dénombre 9
    c'est effectivement plus clair que simplement
    magie : resultat = resultat+1
    Mais on n'avait pas la première phrase initialement (et le nom de variable n'était pas celui utilisé dans le code ...)

    Mais je n'ai toujours pas l explication de votre script ;
    Nous non plus, nous n'avions pas l'explication de ton script


    Ceci dit, l'info comme quoi le widget Text contient toujours un retour à la ligne n'est pas très évidente à trouver dans une doc sur son get (ou j'ai mal cherché, ça peut arriver).
    A partir du moment où on a compris que l'on récupère ce caractère de retour à la ligne systématiquement, on peut trouver diverses façons de s'en débarrasser selon le besoin (si tu saisis plusieurs lignes (avec des retours à la ligne saisis volontairement), comment tu veux que la chaine te soit retourner?): ne pas récupérer le dernier caractère, supprimer les retours chariots à la fin de la chaine (str.rstrip("\n")), .......

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par RAMEX Voir le message
    Mais je n'ai toujours pas l explication de votre script ;
    peut être pouvez vous m indiquer une source ou un site ou je pourrais
    compléter mon ignorance .
    Un fichier texte contient une suite d'octets qui correspondent à des caractères imprimables (on les voit) et à des commandes comme tabulation ctrl-I, nouvelle page ctrl-L, ligne suivante (ctrl-N),... tel que documenté dans l'ASCII (qui existe depuis 1960 à côté de l'EBCDIC pour le monde IBM).

    Ce mélange définissait un fichier texte qui pouvait être expédié à une imprimante dite imprimante ligne ou line printer terminal LPT. C'est juste une tête matricielle qui se déplace horizontalement alors que le papier se déplace verticalement. Les commandes servent à positionner la tête pour savoir où imprimer le caractère suivant.

    note: ce genre de techno. existait bien avant les ordinateurs "modernes" (des années 60).

    Et à partir du moment ou un texte peut contenir des caractères qu'on ne voit pas, sa longueur ne peut se réduire aux seuls caractères visibles.

    On peut vérifier tout çà (avec \n saut de ligne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> s = '123\n456'
    >>> print(s)
    123
    456
    >>> len(s)
    7
    >>>
    Pour visualiser, il est préférable d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> print(repr(s))
    '123\n456'
    >>>
    que la vieille habitude du programmeur C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> print('/%s/' % s)
    /123
    456/
    Il n'y a rien de magique et ce sont des technos de "has been"
    .
    Je ne vois pas pourquoi je me ferais "houspiller" ? Par qui ?
    Imaginez vouloir être membre d'un club d'échec en voulant imposer vos propres règles... Comme on est civilisé, on va essayer de vous expliquer que ce n'est pas raisonnable.... puis si vous abusez un peu trop, on sera désagréables.

    C'est exactement ce qu'il se passe ici. Developpez est un club ou vous avez le statut "Futur Membre du Club".
    Or vous avez plusieurs fois déclaré ne pas vouloir respecter les règles de ces forums, le "respect" doit être réciproque.

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

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

Discussions similaires

  1. Un petit tour de magie
    Par Kevin_Mylano dans le forum Langage
    Réponses: 3
    Dernier message: 03/01/2022, 14h25
  2. Réponses: 7
    Dernier message: 20/06/2016, 13h20
  3. [VBScript] Tour de magie
    Par Aquellito dans le forum ASP
    Réponses: 5
    Dernier message: 22/07/2008, 14h46
  4. Emettre un BEEP (de la tour du pc)
    Par cyberlewis dans le forum C++
    Réponses: 10
    Dernier message: 11/09/2006, 12h28
  5. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 01h40

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