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 :

question bête d'un débutant complet en python


Sujet :

Python

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut question bête d'un débutant complet en python
    Bonjour,

    Par curiosité, j'ai voulu essayer d'apprendre python.
    Langage assez déroutant à priori, mais j'essaye de persister.
    Quand la doc indique que c'est un langage très lisible, par rapport au pascal, c'est du gloubiboulga ... on dirait du c en pire, mais il est vrai que ça a l'air assez efficace.
    Après avoir parcouru une bonne partie de la doc, j'arrive enfin à la partie qui commence à devenir intéressante et à utiliser python autrement que comme une super calculette, la partie qui permet d'ouvrir un fichier
    J'essaye donc l'exemple, adapté à mon contexte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        with os.open('fibo.py', 'r') as f:
            read_data=f.read()
        print(read_data.items())
    et là, patatra, j'ai une magnifique erreur que je n'arrive pas à comprendre :

    with os.open('fibo.py', 'r') as f:
    TypeError: 'str' object cannot be interpreted as an integer


    Je suis sûr que le fichier existe. Si je mets le chemin complet ça me fait la même erreur.

    Qu'est ce que je fais de mal ?

    Merci d'avance ...

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est le "os.open" qui génère l'erreur: sa syntaxe est différente du "open":

    https://docs.python.org/fr/3/library/os.html#os.open

    => retirer le "os."

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 767
    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 767
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par navyg Voir le message
    Après avoir parcouru une bonne partie de la doc, j'arrive enfin à la partie qui commence à devenir intéressante et à utiliser python autrement que comme une super calculette, la partie qui permet d'ouvrir un fichier
    Change de doc et prends-en une qui commence par t'apprendre les outils disponibles dans Python (tuples, listes, ensembles, dictionnaires, strings, fonctions, classes) et comment t'en servir. Parce que pour dire que Python c'est du C en pire soit t'as jamais fait de C, soit tu connais rien de Python.
    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tab=list(x**3 for x in range(5))
    print(tab)
    tab.append("toto")
    print(tab)
    tab.extend(range(7, 10))
    print(tab)
    Tu essayes de faire ça en C et ensuite tu reviens nous voir...
    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]

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Change de doc et prends-en une qui commence par t'apprendre les outils disponibles dans Python (tuples, listes, ensembles, dictionnaires, strings, fonctions, classes) et comment t'en servir. Parce que pour dire que Python c'est du C en pire soit t'as jamais fait de C, soit tu connais rien de Python.
    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tab=list(x**3 for x in range(5))
    print(tab)
    tab.append("toto")
    print(tab)
    tab.extend(range(7, 10))
    print(tab)
    Tu essayes de faire ça en C et ensuite tu reviens nous voir...
    Alors c'est vrai que je débute en python et je le dis en préambule.
    Et en C, j'ai essayé, mais j'ai vite été dégoûté par l'illisibilité du langage, mais ça me rappelle cette mauvaise expérience vécue il y a pas mal d'années ...

    Quand à apprendre les bases, hé bien c'est par ça que j'ai commencé et arrivé à la section 7 après avoir bien étudié toutes les précédentes, je trouve ce langage illisible (par rapport à du pascal) mais il est vrai très puissant.
    Par exemple ce qui suit, je le qualifie d'illisible sauf à le relire 5 ou 6 fois avant de comprendre (notamment le fait de ne pas déclarer les variables, mais c'est sans doute un défaut du pascal, donc il faut faire un effort pour savoir à quoi elles correspondent) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for align, text in zip('<^>', ['left', 'center', 'right']):
        '{0:{fill}{align}16}'.format(text, fill=align, align=align)
    ou ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    width = 5
    for num in range(5,12): 
        for base in 'dXob':
            print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
        print()
    Et justement, ce que tu donnes comme exemple, est des plus lisibles que j'ai vu en python mais pas simple à comprendre quand même (et je n'ai pas essayé de la faire en C).
    Entendons nous bien, je n'ai jamais dit que je ferai plus simple ou plus rapide en pascal, mais tout simplement que les concepts sont difficiles à appréhender car il faut faire une abstraction de haut niveau pour comprendre .... mais je vais m'accrocher ... pour l'instant je n'ai trouvé aucune utilité au python par rapport à mes besoins, mais je vais persister et je vais peut-être trouver

    Je précise que je fais du pascal et bien d'autres langages (cobol, fortran, basic, vba, php, mysql, etc ...) depuis plus de 40 ans, donc il faut avoir pitié des vieux ...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    C'est le "os.open" qui génère l'erreur: sa syntaxe est différente du "open":

    https://docs.python.org/fr/3/library/os.html#os.open

    => retirer le "os."
    Bonjour, avant de mettre os. j'avais essayé sans et ça me faisait aussi une erreur, mais je ne sais plus laquelle.
    en l'enlevant, ça me faisait toujours une erreur, et entre temps j'avais mis cette instruction en haut de fichier pour tester autre chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import os
    from os import open
    et donc même en enlevant os., ça prenait je pense quand même cette référence car dès que je l'ai enlevé, ça a bien fonctionné.
    Merci de m'avoir mis sur la voie.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 767
    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 767
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par navyg Voir le message
    Alors c'est vrai que je débute en python et je le dis en préambule.
    Oui, et tu arrives en disant "c'est illisible pire que le C". Dire ça sur un forum où tous ceux qui sont ici sont à minima des python-fan c'est maladroit.

    Citation Envoyé par navyg Voir le message
    Et en C, j'ai essayé, mais j'ai vite été dégoûté par l'illisibilité du langage
    A un moment donné il te faudra quand-même choisir un langage et t'y mettre. Ou alors tu fais carrément autre chose de plus facile (pilote de chasse par exemple). Mais peut-être cela vient des tutos que tu as utilisés...
    J'en ai écrit un qui est en ce moment évalué par le forum avant qu'il soit mis en ligne. Tu peux le télécharger ici

    Citation Envoyé par navyg Voir le message
    Par exemple ce qui suit, je le qualifie d'illisible sauf à le relire 5 ou 6 fois avant de comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for align, text in zip('<^>', ['left', 'center', 'right']):
        '{0:{fill}{align}16}'.format(text, fill=align, align=align)
    Parce que tu n'as pas appris zip() et donc tu ne vois pas ce qu'il fait.

    Citation Envoyé par navyg Voir le message
    ou ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    width = 5
    for num in range(5,12): 
        for base in 'dXob':
            print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
        print()
    Parce que tu n'as pas appris les itérables et les itérateurs (toute string est itérable => on peut alors construire une boucle via for x in string où "x" va traiter successivement chaque caractère de la chaine).
    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]

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 586
    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 586
    Par défaut
    Citation Envoyé par navyg Voir le message
    tout simplement que les concepts sont difficiles à appréhender car il faut faire une abstraction de haut niveau pour comprendre
    C'est d'abord un langage de programmation objets (et ça change pas mal de choses).

    Citation Envoyé par navyg Voir le message
    Je précise que je fais du pascal et bien d'autres langages (cobol, fortran, basic, vba, php, mysql, etc ...) depuis plus de 40 ans, donc il faut avoir pitié des vieux ...
    Vous maîtrisez la programmation. C'est bien. Reste à apprendre à penser votre code avec Python. Ce qui n'est pas facile car vous allez vous accrocher à faire comme vous le savez déjà (et Python ne l'interdit pas) mais avoir quelques surprises...
    Comme écraser l'open "standard" avec celui importé du module os.

    Le tutoriel qui vient avec Python devrait vous intéresser, il s'adresse aux programmeurs qui découvrent le langage.

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

  8. #8
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    909
    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 : 909
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Citation Envoyé par navyg Voir le message
    Je précise que je fais du pascal et bien d'autres langages (cobol, fortran, basic, vba, php, mysql, etc ...) depuis plus de 40 ans, donc il faut avoir pitié des vieux ...
    C'est peut-être parce que tu as déjà des habitudes avec d'autres langages que tu éprouves des difficulté à appréhender l'écriture de python .
    Pour ce qui est de format(), je trouve aussi l'écriture peu intuitive; c'est un peu comme mettre la charrue avant les bœufs (mais je te rassure, on s'y fait vite).
    Mais cela a été corrigé depuis python3.6 avec l'apparition des fstrings

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Oui, et tu arrives en disant "c'est illisible pire que le C". Dire ça sur un forum où tous ceux qui sont ici sont à minima des python-fan c'est maladroit.

    Parce que tu n'as pas appris zip() et donc tu ne vois pas ce qu'il fait.

    Parce que tu n'as pas appris les itérables et les itérateurs (toute string est itérable => on peut alors construire une boucle via for x in string où "x" va traiter successivement chaque caractère de la chaine).
    Si si j'ai bien lu tout ça mais je ne trouve pas ça clair par rapport à du pascal que tu lis comme un roman.
    Le langage, je l'ai choisi depuis longtemps, c'est pascal, mais je trouve que c'est maladroit de s'en tenir à un seul langage.

    Ca n'empêche pas de ne pas vouloir mourir idiot, et c'est pour ça que, ayant lu beaucoup de bien de python, j'essaye de m'y mettre mais c'est très dur contrairement à ce que j'ai lu sur le sujet.
    En tout cas, c'est mon ressenti après m'être frotté pendant plus de 40 ans à de très nombreux langage (par obligation professionnelle) .... et je reviens toujours au pascal, mais ce qui me gêne pour l'instant dans python, c'est que je ne vois pas (encore ???) comment le mettre en oeuvre de façon "windows" genre fenêtre exécutable à la souris, comment attaquer une base de données mysql (ou autre DB), etc ...sans avoir besoin d'avoir l'interpréteur pour voir le résultat de tes opérations.
    En fait, c'est un article d'embarcadero sur les composants delphi4python qui m'ont poussé à m'intéresser à python.

    Je vais continuer à apprendre et voir ce que ça donne.

    Merci pour vos conseils

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 586
    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 586
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Pour ce qui est de format(), je trouve aussi l'écriture peu intuitive; c'est un peu comme mettre la charrue avant les bœufs (mais je te rassure, on s'y fait vite).
    Mais cela a été corrigé depuis python3.6 avec l'apparition des fstrings
    Avec les f-strings ça donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> width = 5
    >>> for num in range(5,12):
    ...     for base in 'dXob':
    ...         print(f'{num:{width}{base}}', end=' ')
    ...     print()
    ...
        5     5     5   101
        6     6     6   110
        7     7     7   111
        8     8    10  1000
        9     9    11  1001
       10     A    12  1010
       11     B    13  1011
    >>>
    plus court certes aussi ardu.

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

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est d'abord un langage de programmation objets (et ça change pas mal de choses).



    Vous maîtrisez la programmation. C'est bien. Reste à apprendre à penser votre code avec Python. Ce qui n'est pas facile car vous allez vous accrocher à faire comme vous le savez déjà (et Python ne l'interdit pas) mais avoir quelques surprises...
    Comme écraser l'open "standard" avec celui importé du module os.

    Le tutoriel qui vient avec Python devrait vous intéresser, il s'adresse aux programmeurs qui découvrent le langage.

    - W
    Fort heureusement, le pascal est passé à l'objet depuis très longtemps, donc j'ai l'habitude de travailler de cette manière.
    En fait le truc sur l'import de open est dû à un exemple que j'ai recopié et que j'ai oublié de supprimer ensuite en transformant l'exemple pour recopier le suivant.
    J'ai bien compris maintenant qu'il fallait faire attention à ce genre de chose et j'ai découvert que dans pyscripter lorsque tu mets la souris sur un mot clé, la définition apparaît et fait bien ressortir la différence entre os.open et open .... il faut apprendre mais c'est très dur.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Bonjour,

    C'est peut-être parce que tu as déjà des habitudes avec d'autres langages que tu éprouves des difficulté à appréhender l'écriture de python .
    Pour ce qui est de format(), je trouve aussi l'écriture peu intuitive; c'est un peu comme mettre la charrue avant les bœufs (mais je te rassure, on s'y fait vite).
    Mais cela a été corrigé depuis python3.6 avec l'apparition des fstrings

    Oui, en examinant le code d'un peu plus près, la même chose existe en pascal avec format() que je n'aime pas du tout et que je me refuse à pratiquer car après on ne comprend plus ce qu'on a voulu écrire ...

    Au final, je suis assez réfractaire au code puissant et rapide à écrire mais assez peu lisible après je pense ...

  13. #13
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    909
    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 : 909
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    plus court certes aussi ardu.

    - W
    Oui... La question était celle de la visibilité d'un code python.
    Et avec le formatage d'une string avec fstring est d'une lecture plus lisible et plus naturelle...

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Avec les f-strings ça donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> width = 5
    >>> for num in range(5,12):
    ...     for base in 'dXob':
    ...         print(f'{num:{width}{base}}', end=' ')
    ...     print()
    ...
        5     5     5   101
        6     6     6   110
        7     7     7   111
        8     8    10  1000
        9     9    11  1001
       10     A    12  1010
       11     B    13  1011
    >>>
    plus court certes aussi ardu.

    - W
    Tout à fait d'accord, aussi ardu.
    Pour ma part j'ai tout un tas de fonctions de mon cru dans mes utilitaires, pour lesquelles je n'ai pas besoin de regarder la syntaxe pour savoir comment écrire le résultat que je souhaite.
    Sans doute beaucoup moins rapides et puissantes que ces fonctions primitives (dans le sens venant du langage et non pas primaires) mais beaucoup plus conviviales.
    Cette habitude me vient de la programmation en CBasic sur Sord (à partir de 1978 ou 1979) pour lequel j'avais pleins de petites fonctions en assembleur (8080) pour accélérer l'exécution.
    Il faut dire que ces machines avec 64Ko de mémoire et un floppy de 5"1/4 souple (voire 128ko et 8" pour les dernières !!!) demandait de bien optimiser la programmation ...;o)

  15. #15
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    909
    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 : 909
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par navyg Voir le message

    Au final, je suis assez réfractaire au code puissant et rapide à écrire mais assez peu lisible après je pense ...
    Idem.
    D'ailleurs le zen de python*, nous invite à:
    Préfère :
    la beauté à la laideur,
    l'explicite à l'implicite,
    le simple au complexe
    et le complexe au compliqué,
    le déroulé à l'imbriqué,
    l'aéré au compact.
    Prends en compte la lisibilité.
    Les cas particuliers ne le sont jamais assez pour violer les règles.
    Mais, à la pureté, privilégie l'aspect pratique.
    Ne passe pas les erreurs sous silence,
    ... ou bâillonne-les explicitement.
    Face à l'ambiguïté, à deviner ne te laisse pas aller.
    Sache qu'il ne devrait [y] avoir qu'une et une seule façon de procéder,
    même si, de prime abord, elle n'est pas évidente, à moins d'être Néerlandais.
    Mieux vaut maintenant que jamais.
    Cependant jamais est souvent mieux qu'immédiatement.
    Si l'implémentation s'explique difficilement, c'est une mauvaise idée.
    Si l'implémentation s'explique aisément, c'est peut-être une bonne idée.
    Les espaces de nommage ! Sacrée bonne idée ! Faisons plus de trucs comme ça.
    *

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 586
    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 586
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Oui... La question était celle de la visibilité d'un code python.
    Et avec le formatage d'une string avec fstring est d'une lecture plus lisible et plus naturelle...
    La "lisibilité" est difficile à évaluer objectivement. Elle dépend de ce qu'on a l'habitude de... et sera relative à l'expérience de chacun.
    Par contre, comparé à C/C++, Python sera plus lisible/facile (pour moi) parce qu'il y aura moins de lignes de code à écrire (et relire) pour faire la même chose... mais les opérations de formatages restent similaires.

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

  17. #17
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 767
    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 767
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par navyg Voir le message
    mais ce qui me gêne pour l'instant dans python, c'est que je ne vois pas (encore ???) comment le mettre en oeuvre de façon "windows" genre fenêtre exécutable à la souris, comment attaquer une base de données mysql (ou autre DB), etc ...sans avoir besoin d'avoir l'interpréteur pour voir le résultat de tes opérations.
    Pour avoir des fenêtres utilisable avec la souris ça c'est de l'IHM. Il en existe une de base intégrée en natif dans Python: tk. Assez minimaliste mais elle permet de s'y mettre et voir immédiatement le résultat.
    Ensuite il en existe une autre plus complète: Qt (écrite à l'origine en C++ mais portée ensuite sous Python et nommée PyQt). Ici un minitutoriel d'apprentissage basé sur des exemples qui montent en puissance à chaque étape.

    Pour attaquer une bdd, il faut passer par un module dédié (à télécharger et à installer). MySQL je connais pas trop (je sais pas quel module est préférentiel) mais pour Postgres j'utilise psycopg (https://pypi.org/project/psycopg).

    Généralement l'installation d'un module se fait via la commande pip3 (exemple pip3 install psycopg). Elle va chercher directement le module sur le net et s'il manque des trucs elle les récupère. Si ta machine n'a pas accès au net, alors tu récupères le fichier ".whl" (en passant par une autre machine qui, elle, est reliée au net) et tu peux alors l'installer là aussi via pip3.

    Une fois que tu as installé le module (ex psycopg) pour attaquer une bdd tu passes par la fonction de connection incluse dans le module, fonction à laquelle tu passes les différentes infos (host, port, nom bdd, user, mot de passe), fonction qui te renvoie un identifiant bdd (exactement comme open() te renvoie un identifiant de fichier). Cet identifiant te permet de déclarer un curseur (une espèce d'interface SQL à laquelle tu peux passer tes ordres SQL et qui récupère le résultat).
    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bddId=psycopg2.connect("dbname=test user=postgres password=secret")
    curs=bddId.cursor()
    curs.execute("select * from table")
    for row in curs.fetchall(): print(row)
    curs.close()
    bddId.close()
    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]

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Le tutoriel qui vient avec Python devrait vous intéresser, il s'adresse aux programmeurs qui découvrent le langage.

    - W
    Je n'avais pas fait attention, mais c'est exactement ce tutoriel que je suis en train de bosser ...

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    J'en ai écrit un qui est en ce moment évalué par le forum avant qu'il soit mis en ligne. Tu peux le télécharger ici
    J'ai voulu profiter de ton tuto, mais le lien ne fonctionne pas ??

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Pour avoir des fenêtres utilisable avec la souris ça c'est de l'IHM. Il en existe une de base intégrée en natif dans Python: tk. Assez minimaliste mais elle permet de s'y mettre et voir immédiatement le résultat.
    Ensuite il en existe une autre plus complète: Qt (écrite à l'origine en C++ mais portée ensuite sous Python et nommée PyQt). Ici un minitutoriel d'apprentissage basé sur des exemples qui montent en puissance à chaque étape.

    Pour attaquer une bdd, il faut passer par un module dédié (à télécharger et à installer). MySQL je connais pas trop (je sais pas quel module est préférentiel) mais pour Postgres j'utilise psycopg (https://pypi.org/project/psycopg).
    Une fois que tu as installé le module (ex psycopg) pour attaquer une bdd tu passes par la fonction de connection incluse dans le module, fonction à laquelle tu passes les différentes infos (host, port, nom bdd, user, mot de passe), fonction qui te renvoie un identifiant bdd (exactement comme open() te renvoie un identifiant de fichier). Cet identifiant te permet de déclarer un curseur (une espèce d'interface SQL à laquelle tu peux passer tes ordres SQL et qui récupère le résultat).
    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bddId=psycopg2.connect("dbname=test user=postgres password=secret")
    curs=bddId.cursor()
    curs.execute("select * from table")
    for row in curs.fetchall(): print(row)
    curs.close()
    bddId.close()
    Merci, c'est exactement ce que je cherchais, mais je m'aperçois que finalement ce qui est natif avec python en terme d'interface graphique est minimaliste, et qu'il faut des modules supplémentaires à installer pour travailler correctement. Je pensais que python était un langage qui englobait de base tous ces éléments.

    Concernant le mode de connexion ça me rappelle le php ou lorsque j'attaque une base mysql en pascal juste avec l'unité mysql.pas sans les composants BDD.

    Merci beaucoup. ... Quel boulot en perspective !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Quelques questions bêtes...
    Par Stomp dans le forum Windows
    Réponses: 2
    Dernier message: 02/08/2019, 12h47
  2. Question béte d'un débutant SQL
    Par Invité dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/01/2019, 17h29
  3. Débutant : question bête désolé
    Par joums dans le forum VB.NET
    Réponses: 6
    Dernier message: 03/09/2010, 17h10
  4. Question bête de débutant en JSP.
    Par Hydex dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/01/2008, 00h46
  5. Réponses: 3
    Dernier message: 31/01/2006, 16h54

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