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 explications lecture d'une ligne spécifique fichier txt


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut Demande explications lecture d'une ligne spécifique fichier txt
    Bonjour à tous,

    Merci à ceux qui prendrons le temps de me lire et à ceux qui pourront m'éclairer.
    Donc j'ai un petit exercice à faire et je ne comprends pas la méthode, j'aimerai que vous m'expliquiez sans forcement me donner le code.

    Exercice :

    Je dispose d'un fichier txt avec à l'intérieur plusieurs Articles.

    Nom : Screen Shot 2018-10-24 at 10.41.18 AM.png
Affichages : 937
Taille : 109,6 Ko

    Je dois créer un petit programme qui demande à l'utilisateur de rentrer le numéro d'un Article et donc lui retourner seulement l'Article et non pas le fichier txt complet.
    Ainsi que de mettre tous ça dans une boucle pour continuer à demander à l'utilisateur de rentrer un autre numéro ou alors quitter le programme.

    ---------------------

    Je vous avoue être complétement perdu. Pourriez vous me donner la logique et l'ordre de ce que je devrais faire.

    Un Grand merci à vous !!!

    ps : Le code doit être au plus simple car je débute, donc je connais très peu de fonction.
    ps 2 : Je suis sous Spyder Python 3.6

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    un des principes de base c'est de décortiquer comment tu t'y prendrais si tu le faisais à la main

    si je te réclame l'article 5, pourquoi tu me donne "Article 5 No one shall be subjected to torture or to cruel, inhuman or degrading treatment or punishment." ? pourquoi tu t'arrêtes à "punishment" au lieu de continuer sur la ligne suivante ? etc.

    le but étant de trouver une logique systématique là dedans, arriver à se rendre compte qu'à chaque fois on fait les mêmes opérations ("je cherche dans le texte", "je délimite un extrait de texte", "j'affiche un extrait de texte" etc.)

    et enfin il y a la connaissance du langage, Python fournit un certain nombre de fonctions qui vont permettre de lire/écrire des fichier, d'un seul coup ou au contraire ligne par ligne, rechercher dans du texte, calculer la longueur d'un texte, découper un texte etc. etc.

  3. #3
    Membre confirmé Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Par défaut
    Bonjour,
    j'ai l'impression que dans ce texte, chaque ligne correspond à un article et que l'article 1 est à la ligne 2.
    Si c'est bien cela, pas de problème, l'article i correspond à fichier.readlines()[i] puisque le 0 correspond à la première ligne, et donc le 1 à la deuxième ligne donc à l'article 1, et ainsi de suite...
    Si ce n'est pas le cas, il faut parcourir les éléments de la listes fichier.readlines() jusqu'à y retrouver une chaine de caractère incluant 'article i', puis une autre chaine de caractère incluant 'article i+1' et il suffit de retourner tous les éléments intermédiaires en les joignant en une seule chaine par l'utilisation de la méthode str.join(liste), ou liste est une liste de chaines de caractères (donc la liste des éléments intermédiaires).
    Bon courage

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Normalement un simple text.split("Article ") devrait retourner la liste des articles dans l'ordre.
    Le premier item de la liste est à ignorer mais l'utilisateur n'est pas censé demander l'article 0.

  5. #5
    Membre confirmé Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Par défaut
    Mais dans le cas ou chaque ligne correspond à un article, autant utiliser fichier.readlines()[i], plutôt que de créer un chaine texte=''.join(fichier.readlines()) et ensuite de faire text.split("article")[i] pour obtenir le ième article !

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par racine carrée Voir le message
    Mais dans le cas ou chaque ligne correspond à un article, autant utiliser fichier.readlines()[i], plutôt que de créer un chaine texte=''.join(fichier.readlines()) et ensuite de faire text.split("article")[i] pour obtenir le ième article !
    Pas besoin de join chacune des lignes, on peut lire le fichier dans son intégralité d'un seul coup : fichier.read()

  7. #7
    Membre confirmé Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Par défaut
    C'est vrai, mais le problème de .split('article'), c'est que ça va découper à chaque occurence de 'article' en suppriment la chaine 'article'. on obtiendra donc bien la liste des articles, mais chaque article commencera par ' i: ...' au lieu de commencer par 'article i: ...'.

  8. #8
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Oui chaque article commencera par son numéro mais ça c'est une simple question de mise en forme avant affichage de même que le préambule du texte qui sera l'item 0 de la liste peut être, par exemple, remplacé pas "Il n'y a pas d'article 0".

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,

    un des principes de base c'est de décortiquer comment tu t'y prendrais si tu le faisais à la main

    si je te réclame l'article 5, pourquoi tu me donne "Article 5 No one shall be subjected to torture or to cruel, inhuman or degrading treatment or punishment." ? pourquoi tu t'arrêtes à "punishment" au lieu de continuer sur la ligne suivante ? etc.

    le but étant de trouver une logique systématique là dedans, arriver à se rendre compte qu'à chaque fois on fait les mêmes opérations ("je cherche dans le texte", "je délimite un extrait de texte", "j'affiche un extrait de texte" etc.)

    et enfin il y a la connaissance du langage, Python fournit un certain nombre de fonctions qui vont permettre de lire/écrire des fichier, d'un seul coup ou au contraire ligne par ligne, rechercher dans du texte, calculer la longueur d'un texte, découper un texte etc. etc.
    Merci pour tes réponses. Alors c'est bien ce que j'essaie de faire. Papier d'abord et ensuite d'essayer, mais je n'ai pas encore la logique du truc qui fait que ça title dans ma tête. haha

    Pour moi je commencerai par :

    - Définir l'endroit de mon fichier
    - Lecture du fichier

    La il faudrait pouvoir sauvegarder le fichier, dans une liste ou un dictionnaire. Genre { 'Article1' : 'contenu de l'article 1', 'Article2' : 'contenu de l'article 2'}

    - Faire un Input pour demander à l'utilisateur de taper l'article de son choix
    - Lui renvoyer l'article
    - Faire un autre input pour savoir si il veut continuer ou quitter le programme.


    Je bloque au niveau du dictionnaire ou liste à sauvegarder.




    Citation Envoyé par racine carrée Voir le message
    Bonjour,
    j'ai l'impression que dans ce texte, chaque ligne correspond à un article et que l'article 1 est à la ligne 2.
    Si c'est bien cela, pas de problème, l'article i correspond à fichier.readlines()[i] puisque le 0 correspond à la première ligne, et donc le 1 à la deuxième ligne donc à l'article 1, et ainsi de suite...
    Si ce n'est pas le cas, il faut parcourir les éléments de la listes fichier.readlines() jusqu'à y retrouver une chaine de caractère incluant 'article i', puis une autre chaine de caractère incluant 'article i+1' et il suffit de retourner tous les éléments intermédiaires en les joignant en une seule chaine par l'utilisation de la méthode str.join(liste), ou liste est une liste de chaines de caractères (donc la liste des éléments intermédiaires).
    Bon courage

    Merci d'avoir pris le temps de répondre.
    Oui j'ai été autorisé à tout remettre à la ligne pour simplifier.


    Déjà avec la commande fichier.readlines()[i] tu viens de me donner un gros coup de pouce. Je ne connaissais pas le [i] donc je n'avais pas ce que je voulais avant.

    Maintenant j'ai ça dans mon code : print(fichier.readlines()[int(ask_number)+2]) le + 2 car quand je demande le 3 il me donne le 1 etc...


    Merci aussi aux autres qui prennent la peine de répondre.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    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 815
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par alexiiiis Voir le message
    Pour moi je commencerai par :

    - Définir l'endroit de mon fichier
    - Lecture du fichier
    C'est trop vague comme algo. Ce que t'a demandé BufferBob c'est de décortiquer comment tu sais que l'article 3 se trouve à tel endroit. Et la réponse a été donnée par racine carrée qui a identifié les lignes comme point de repère. Or Python sait faire de la lecture par ligne.

    Citation Envoyé par alexiiiis Voir le message
    La il faudrait pouvoir sauvegarder le fichier, dans une liste ou un dictionnaire. Genre { 'Article1' : 'contenu de l'article 1', 'Article2' : 'contenu de l'article 2'}

    - Faire un Input pour demander à l'utilisateur de taper l'article de son choix
    - Lui renvoyer l'article
    - Faire un autre input pour savoir si il veut continuer ou quitter le programme.

    Je bloque au niveau du dictionnaire ou liste à sauvegarder.
    Pourquoi un dictionnaire ? Ce n'est pas que ce n'est pas possible mais si le tableau suffit à la solution, utiliser un dictionnaire ne pourra que la compliquer.

    Citation Envoyé par alexiiiis Voir le message
    Je ne connaissais pas le [i] donc je n'avais pas ce que je voulais avant.
    Ben c'est quand-même un des fondements de la programmation que de pouvoir stocker des éléments dans des tableaux et connaitre la syntaxe pour pouvoir ensuite récupérer un élément précis dudit tableau. C'est dans les 10 premières pages de tous les tutoriels Python !!!

    Citation Envoyé par alexiiiis Voir le message
    le + 2 car quand je demande le 3 il me donne le 1 etc...
    Non, quand tu demandes le 3 il te donne le contenu [3] du tableau. Or ce tableau contient aussi les deux lignes d'introduction (parce que la seconde ligne vide est quand-même une ligne). Fatalement l'article n° 1 se touve en position 3. Accessoirement générer le tableau à chaque fois (parce que c'est ce que fait readlines() => il lit les lignes pour les stocker dans un tableau) c'est plutôt moyen. Tu ne penses pas que tu aurais pu sauvegarder le tableau généré justement pour ne pas refaire le travail de lecture du fichier à chaque nouvel article ? D'autant plus que le fichier ayant été lu, il faut alors se repositionner au début pour pouvoir le relire.
    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]

  11. #11
    Membre confirmé Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Par défaut
    En effet plutôt que de le relire à chaque fois il vaut mieux ouvrir le fichier et "l'enregistrer" une bonne fois pour toutes dans un tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    articles=fichier.readlines()
    Ensuite l'article 1 correspond à articles[3] (puisqu'il y a un décalage), donc il suffit de découper ce tableau en ne gardant que les éléments à partir du troisième. Pour cela il faut utiliser le code suivant:
    Ensuite, tu as une liste articles de la forme ["article1...", "article2...", ..., "article n"]. Puisque l'indexage des tableaux commence à 0 en python, l'article 1 correspond à articles[0], et en plus si l'utilisateur demande l'article 0 ça fait un cas de plus à gérer; on a donc intérêt à rajouter l'élément "IL N'Y A PAS D'ARTICLE 0" au début de la liste: 2 avantages à cela: le cas de l'article 0 n'est plus à gérer, et cela décale le tableau de manière à ce que l'article 1 corresponde à articles[1].
    Tout cela réuni donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    articles=["IL N'Y A PAS D'ARTICLE 0"]+fichier.readlines()[3:]
    recommencer=True
    while recommencer:
        demande=int(input("Je veux l'article numéro:"))
        print(articles[demande])
        recommencer=input("Voulez-vous lire un autre article (oui/non) ")=="oui"
    (Remarque: le code a==b renvoie True si a et b sont égaux, donc ici si l'utilisateur rentre oui, et renvoie False dans tous les autres cas)
    Après il reste à gérer l'ouverture du fichier (en mode lecture) avec la fonction open; il reste aussi à gérer le cas ou le nombre entré par l'utilisateur est plus grand que le nombre d'articles...
    Bon courage !

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut
    Merci pour vos réponses.

    J'avoue que je galère mais sévère même avec vos explications. J'ai seulement quelques heures de classe de python ( < de 10hr ) donc forcément c'est pas encore tout intégré même les choses de base.

    J'aimerai vraiment suivre vos infos, c'est pas que je veux pas mais j'ai pas les connaissances encore.

    Voici ce que j'ai fait. Ça fonctionne, sauf pour arrêter le programme, je vois pas quoi écrire pour le quitter.

    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
    24
    25
    26
    27
    28
    29
    def article():
     
     
     
        path_article ='/Users/alexis/Desktop/Python/project_article.txt'
        file = open(path_article,'r')
     
        ask_number = int(input('Give me an article number please :'))
        les_articles = file.readlines()
        print(les_articles[int(ask_number)+2])
     
     
     
     
    article()  
     
    def boucle():
     
        to_continue = 'y'
     
        while to_continue == 'y':
     
            to_continue = str(input('Do you want to read an other article ? y / n'))
            print(article())
     
     
        print('Thank you and see you next time')
     
    boucle()

  13. #13
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Tu dois ajouter ça à l'entrée utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ask_number = input('Give me an article number please (Q to quit) :')
    if ask_number in ('q', 'Q'):
        return

  14. #14
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par alexiiiis Voir le message
    J'avoue que je galère mais sévère même avec vos explications. J'ai seulement quelques heures de classe de python ( < de 10hr )
    du coup tu dois avoir un support de cours peut-être ? tu as vu pendant ces 10h un certain nombre de choses, peut-être des méthodes classiques comme index(), startswith() ou encore split() ? des mots-clés du langage comme if/elif/else pour évaluer une condition ? comment ouvrir un fichier et lire dedans etc. ? ou au contraire t'es lâché dans la nature et tu dois te débrouiller ?

    il n'y a de toutes façons pas de mystère; au delà d'une petite dose de théorie, c'est la pratique régulière qui permet de s'y retrouver, de créer et entrainer des chemins de pensée dans le cerveau qui vont l'habituer à comprendre et programmer de plus en plus vite/fluide

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    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 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alexiiiis Voir le message
    J'avoue que je galère mais sévère même avec vos explications. J'ai seulement quelques heures de classe de python ( < de 10hr ) donc forcément c'est pas encore tout intégré même les choses de base.

    J'aimerai vraiment suivre vos infos, c'est pas que je veux pas mais j'ai pas les connaissances encore.
    Ok, on comprend. T'as peu d'expérience et on t'envoie faire tes premières armes.
    Mais cela ne t'empêche pas de réfléchir un peu à ce que tu fais. Par exemple si tu écris print(article()) ça signifie "je veux imprimer (à l'écran) ce que la fonction me renvoie". Mais que te renvoie-t-elle cette fonction ?

    Il faut essayer de programmer "simple". Tu as des actions à faire qui se découpent en "actions élémentaires". Ce sont ces actions élémentaires qui doivent devenir des fonctions. Et ça, c'est la réflexion qui te dira comment découper.
    Ensuite il y a l'expérience que tu n'as pas et que nous on a. Et par exemple de par notre expérience on sait qu'une fonction qui "cherche+affiche" c'est généralement une assez mauvaise idée parce que ça la limite à l'affichage écran alors que parfois les résultats peuvent être traduits sur un autre support (un mail, une impression, etc).

    Ainsi moi je verrais bien une fonction qui se limite à renvoyer l'article demandé. Elle reçoit donc en paramètre le numéro de l'article, elle va le chercher dans le fichier et le renvoie. Mais surtout elle ne demande rien à l'utilisateur et elle n'affiche rien non plus.
    Ainsi, tu pourrais ensuite encapsuler cette fonction dans une fonction chargée de l'interface. Cette seconde fonction demanderait à l'utilisateur l'article voulu et le lui afficherait à l'écran. Ou un message spécial si l'article n'existe pas (ce qui t'oblige donc à programmer la première pour qu'elle renvoie une valeur particulière si l'article n'existe pas).
    Et ton programme, lui, se contenterait simplement d'appeler la fonction "interface()" en boucle jusqu'à ce qu'on choisisse de quitter.

    Déjà en programmant ainsi, tu peux tester tes fonctions (ce qu'on appelle les "tests unitaires"). Et ensuite tester ton programme quand tu y intègres tes fonctions (les "tests d'intégration"). Et surtout ça rend ton code plus simple à coder, à relire et à modifier. Si demain tu veux que l'article parte par mail, te suffit de programmer une autre fonction d'IHM mais la fonction qui se charge de récupérer l'article, elle, ne change pas.
    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]

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Tu dois ajouter ça à l'entrée utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ask_number = input('Give me an article number please (Q to quit) :')
    if ask_number in ('q', 'Q'):
        return
    Merci VinsS

    Citation Envoyé par BufferBob Voir le message
    du coup tu dois avoir un support de cours peut-être ? tu as vu pendant ces 10h un certain nombre de choses, peut-être des méthodes classiques comme index(), startswith() ou encore split() ? des mots-clés du langage comme if/elif/else pour évaluer une condition ? comment ouvrir un fichier et lire dedans etc. ? ou au contraire t'es lâché dans la nature et tu dois te débrouiller ?

    il n'y a de toutes façons pas de mystère; au delà d'une petite dose de théorie, c'est la pratique régulière qui permet de s'y retrouver, de créer et entrainer des chemins de pensée dans le cerveau qui vont l'habituer à comprendre et programmer de plus en plus vite/fluide
    Merci BufferBob.
    Le prof nous donne de la théorie en suivant des Pdf du MIT open-course https://ocw.mit.edu/courses/electric...d-programming/
    Avec peu de pratique en classe, et il nous a donné cet exercice avec l'énoncé que je vous ai cité plus haut. Je viens de voir que sur ce site il y avait plusieurs Tutos pour Python je vais y jeter un oeil.


    Citation Envoyé par Sve@r Voir le message
    Ok, on comprend. T'as peu d'expérience et on t'envoie faire tes premières armes.
    Mais cela ne t'empêche pas de réfléchir un peu à ce que tu fais. Par exemple si tu écris print(article()) ça signifie "je veux imprimer (à l'écran) ce que la fonction me renvoie". Mais que te renvoie-t-elle cette fonction ?
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    fonctions (les "tests d'intégration"). Et surtout ça rend ton code plus simple à coder, à relire et à modifier. Si demain tu veux que l'article parte par mail, te suffit de programmer une autre fonction d'IHM mais la fonction qui se charge de récupérer l'article, elle, ne change pas.
    Merci à toi Sve@r de prendre le temps de répondre.
    Je comprends ce que tu as voulu me dire sauf la dernière partie. Je vais reprendre depuis le début pour bien assimiler tout ce le contenu. Je pense qu'il faudrait commencer par coder des choses plus simple, pour bien comprendre le fonctionnement et surtout le raisonnement.

  17. #17
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    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 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alexiiiis Voir le message
    Je comprends ce que tu as voulu me dire sauf la dernière partie.
    Sur les tests unitaires ? Pas compliqué: quand tu as fini de coder une fonction, alors tu la vérifies. Tu l'appelles 2 ou 3 fois avec des paramètres différents et tu vérifies dans chaque cas que ce qu'elle te retourne correspond bien à ce qui doit être retourné.

    En plus, Python offre déjà un truc pour écrire une fonction et la tester: te suffit de rajouter, à la fin de ton script, ces lignes
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if __name__ == "__main__":
    	# ici faire tes tests sur tes fonctions
    # if
    Ensuite, tu exécutes ton script comme tu exécuterais n'importe quel autre programme Python. Dans ce cas (appel direct), alors la variable "__name__" vaut "__main__" et tout ce qui est dans le "if" est alors exécuté.
    Puis, quand tu as fini tes tests, ben tu ne change plus rien. Plus tard, quand tu importeras ton script dans un autre, la variable "__main__" vaudra autre chose et le "if" ne sera pas exécuté donc ne viendra pas polluer ton import
    Exemple: tu écris un fichier nommé "calcul.py"
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def fibonacci(n):
    	U=(1, 1)
    	for i in range(n): U=(U[1], U[0]+U[1])
    	return U[-1]
    # fibonacci
     
    if __name__ == "__main__":
    	for i in range(10):
    		printf(i, fibonacci(i))	# Pour tester
    # if
    Là tu peux demander "python calcul.py" et vérifier à l'écran que tu obtiens bien les bonnes valeurs pour la suite de Fibonacci (à savoir 1, 1, 2, 3, 5, 8, 13, 21, 34, 55).

    Ensuite, tu peux ouvrir un second script "xxx.py" et écrire import calcul puis utiliser à loisir la fonction calcul.fibonacci() car tu sais qu'elle renvoie les bonnes valeurs. Mais lors de l'import, tous les tests seront shuntés et ne viendront pas pourrir ton second script.

    Citation Envoyé par alexiiiis Voir le message
    Je pense qu'il faudrait commencer par coder des choses plus simple, pour bien comprendre le fonctionnement et surtout le raisonnement.
    Exactement
    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 confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2018
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 88
    Par défaut
    Merci Sve@r !!
    J'ai compris ce que tu voulais me dire.

    Je vais trouver des exercices de pur débutant, et reviendrais vous pouvez d'autres questions plus tard haha.
    Merci encore à vous tous qui prenez la peine de répondre.

Discussions similaires

  1. Remplacer une ligne dans fichier txt !
    Par cincap dans le forum Débuter
    Réponses: 13
    Dernier message: 24/09/2013, 12h52
  2. modifier une ligne dans fichier txt
    Par mvc_dev dans le forum C#
    Réponses: 6
    Dernier message: 14/05/2012, 13h23
  3. Modifier une ligne d’un fichier .txt (et seulement celle-ci)
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2011, 14h02
  4. Lecture d'une ligne précise fichier txt
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2007, 15h20
  5. [vb.net] ajouter une ligne à un fichier txt existant
    Par tbdarkspirit dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/05/2007, 11h41

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