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 :

Script de génération de texte (Problème)


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut Script de génération de texte (Problème)
    Bonjour à tous, architecte en formation, débutant dans le language Python, j'ai un souci sur un script que j'essais de modifier à ma sauce.
    Le lien du script https://github.com/Guy0m/text-genera.../generateur.py

    Pour vous expliquer, je cherche à générer des phrase aléatoire avec des bases de données (listes de mots) : Verbe, nom communs etc

    Voici ce que j'ai essayé de manipuler sans trouver la solutions (je précise que je n'ai aucune base en language python)

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    import os
    import sys
    import random
     
    class main:
     
            liste_determinants = list(open(r'determinants.txt', "rb").read().splitlines())
            liste_negatif = list(open(r'qualites.txt', "rb").read().splitlines())
            liste_positif = list(open(r'qualites.txt', "rb").read().splitlines())
            liste_sujet_verbe = list(open(r'verbes.txt', "rb").read().splitlines())
            liste_noms_communs = list(open(r'pieces.txt', "rb").read().splitlines())
            liste_resultat=[]
            choix = 'null'
            determinants = 'null,null'
            nom_commun = 'null,null'
            positif = 'null,null'
            negatif = 'null,null'
            classification = ['masculin', 'feminin'] #'neutre', 'pluriel', 'voyelle'
            tendance = 50; #tendance negative a 100, neutre a 50, positive a 0
     
     i=1
            while i<= 5: #nombre de phrases a generer
     
     
                    if choix == 'null':
                            choix = random.choice(classification)
     
                    while choix !=  determinants.split(',')[1]:
                            determinants=random.choice(liste_determinants)
     
                    if tendance < random.randint(0,100):
                            while choix != positif.split(',')[1]:
                                    positif=random.choice(liste_positif)
                                    adjectif=positif
     
                    else:
                            while choix !=  negatif.split(',')[1]:
                                    negatif=random.choice(liste_negatif)
                                    adjectif=negatif
     
                    while choix !=  nom_commun.split(',')[1]:
                            nom_commun=random.choice(liste_noms_communs)
     
                    phrase=random.choice(liste_sujet_verbe)+' '+determinants.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
                    liste_resultat.append(phrase)
                    print (phrase)
                    i=i+1
                    choix = 'null'
                    determinants = 'null,null'
                    nom_commun = 'null,null'
                    positif = 'null,null'
                    negatif = 'null,null'
     
            resultat = open('resultat.txt', "w")
            resultat.write('\n'.join(liste_resultat))
            print('\nResultat : '+ resultat.name)

    Pour le moment voici l'erreur :

    ---------------------------------------------------------------------------
    NameError Traceback (most recent call last)
    Input In [28], in <cell line: 2>()
    6 choix = random.choice(classification)
    8 while choix != determinants.split(',')[1]:
    ----> 9 determinants=random.choice(liste_determinants)
    11 if tendance < random.randint(0,100):
    12 while choix != positif.split(',')[1]:

    NameError: name 'liste_determinants' is not defined

    Mais je pense qu'elle va s'appliquer à toute les fcts de liste.
    Mes fichiers textes sont bien entendu dans le bon dossier.
    Je suis un peu perdu et c'est pour un projet d'architecture que j'essais de mettre en place (master2). merci d'avance à tous

  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 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Caesarjulius Voir le message
    je précise que je n'ai aucune base en language python
    Quelque part, je pense que c'est un gros handicap.
    Le souci principal de ton code c'est cet objet main qui ne possède aucune méthode, aucun constructeur, et que Python ne sait donc pas analyser.
    Plus ce "i=0" suivi en dessous par une ligne décalée alors qu'il n'y a aucune raison de marquer ici un début de bloc.

    J'ai parfois l'impression que les gens qui ne sont pas du métier considèrent l'informatique en général et les langages (sans "u" en français) de programmation en particulier comme une espèce de "sous-domaine abatardi" tellement évident, tellement peanut, qu'il ne mérite même pas qu'on s'y attarde, qu'il suffit de lire un exemple de 3 lignes et que le reste viendra tout seul, presque par capilarité.
    Donc Python c'est un peu comme tout le reste, ça doit aussi s'apprendre et se travailler.

    Pour le reste, tu ouvres tes fichiers textes en "rb" (b=binaire et un fichier texte ce n'est pas un fichier binaire), tu ne les fermes pas, tu utilises une string "null" comme marqueur particulier (il existe None pour ça) et tu utilises des mots (ex masculin, féminin) comme indicateur d'état (c'est plus rapide de passer par des valeurs spécifiques et surtout ça ne dépend alors plus de la langue utilisée).

    Citation Envoyé par Caesarjulius Voir le message
    Pour le moment voici l'erreur :
    Même pas, comme je le pensais, l'erreur est sur la ligne 22 while i<= 5: #nombre de phrases a generer qui contient une indentation inattendue (plus la ligne i=1 elle aussi décalée via un espace à son début).
    Donc si tu ne dois lire qu'une seule page d'un tutoriel Python, je te recommande celle-ci.
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caesarjulius Voir le message
    C'est aussi en manipulant que l'on apprend.
    Oui, ce qu'on nomme généralement "exercices". Mais les exercices sont alors de "petits trucs". Par exemple "ouvrir un fichier et lire son contenu". De là, on peut rajouter ensuite "prendre une phrase au hasard dans ce qui a été lu". Puis "découper chaque mot de la phrase". Et etc etc pour finalement arriver à générer un texte complet.
    Ce forum contient tout une gamme d'exercices divers avec solutions.
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Le souci principal de ton code c'est cet objet main qui ne possède aucune méthode, aucun constructeur, et que Python ne sait donc pas analyser.
    Plus ce "i=0" suivi en dessous par une ligne décalée alors qu'il n'y a aucune raison de marquer ici un début de bloc.
    Finalement il n'y a pas de solutions dans cette configuration.

    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
     
    class main:
     
            liste_determinants = list(open(r'determinants.txt', "rb").read().splitlines())
            liste_negatif = list(open(r'qualites.txt', "rb").read().splitlines())
            liste_positif = list(open(r'qualites.txt', "rb").read().splitlines())
            liste_sujet_verbe = list(open(r'verbes.txt', "rb").read().splitlines())
            liste_noms_communs = list(open(r'pieces.txt', "rb").read().splitlines())
            liste_resultat=[]
            choix = None
            determinants = None
            nom_commun = None
            positif = None
            negatif = None
            classification = ['masculin', 'feminin'] #'neutre', 'pluriel', 'voyelle'
            tendance = 50; #tendance negative a 100, neutre a 50, positive a 0
    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
    30
    31
    32
    33
    34
    35
    36
    37
     
    i=1
    while i<= 5: #nombre de phrases a generer
     
     
                    if choix == None:
                            choix = random.choice(classification)
     
                    while choix !=  determinants.split(',')[1]:
                            determinants=random.choice(liste_determinants)
     
                    if tendance < random.randint(0,100):
                            while choix != positif.split(',')[1]:
                                    positif=random.choice(liste_positif)
                                    adjectif=positif
     
                    else:
                            while choix !=  negatif.split(',')[1]:
                                    negatif=random.choice(liste_negatif)
                                    adjectif=negatif
     
                    while choix !=  nom_commun.split(',')[1]:
                            nom_commun=random.choice(liste_noms_communs)
     
                    phrase=random.choice(liste_sujet_verbe)+' '+determinants.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
                    liste_resultat.append(phrase)
                    print (phrase)
                    i=i+1
                    choix = None
                    determinants = None
                    nom_commun = None
                    positif = None
                    negatif = None
     
    resultat = open('resultat.txt', "w")
    resultat.write('\n'.join(liste_resultat))
    print('\nResultat : '+ resultat.name)

  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 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caesarjulius Voir le message
    Finalement il n'y a pas de solutions dans cette configuration.
    Dès que tu as class ... tu manifestes ton intention de créer un objet. Tu dois ensuite créer son constructeur, des attributs et méthodes (tout ce qui caractérise la vision "informatique" d'un objet de la vie réelle). Si par exemple je veux créer un objet "voiture", il est probable que j'y mettrais un attribut "puissance", un autre "vMax", un autre "immatriculation" etc.
    Une fois l'objet créé, tu peux l'utiliser.

    Ici tu ne fais rien de tout cela.

    Si tu commençais simplement...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open("determinants.txt", "r") as fp: liste_determinants=fp.readlines()
    print(liste_determinants)
    ... et regardais ce que ça donne...

    Pour info, la partie qui explique comment créer et utiliser les objets est le chapitre 14 de mon tuto. Cela signifie qu'il y a 13 chapitres à assimiler avant de vouloir s'y attaquer.
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caesarjulius Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with open "determinants.txt" as fp: liste_determinants=fp.readlines()
    print(liste_determinants)
     
     Input In [2]
        with open "determinants.txt" as fp: liste_determinants=fp.readlines()
                  ^
    SyntaxError: invalid syntax
    Des parenthèses à open(), c'est une fonction

    Citation Envoyé par Caesarjulius Voir le message
    Mais tu a peut-être raison je m'attaque à quelque chose qu'il faut maitriser avant tout.
    Surtout que ton exemple, "la chambre" est une string unique mais ensuite tu y insères la qualité quand tu veux sortir "la grande chambre"...

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random
     
    piece=("la chambre", "le salon", "la cuisine", "la pièce centrale")
    qualite=("grande", "petite", "moyenne")
    verbe=("marche", "rampe", "court")
     
    p=random.choice(piece).split()
    q=random.choice(qualite)
    v=random.choice(verbe)
    print("Machine %s dans %s %s %s" % (v, p[0], q, " ".join(p[1:])))

    Ne reste qu'à charger les valeurs à partir du fichier puis boucler pour sortir n phrases.

    Programmer c'est ça: commencer par faire un truc minimaliste qui fonctionne et seulement ensuite l'enrichir pour le faire correspondre au programme attendu.

    Restera les détails (ex "le grande salon")...
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sve@r Voir le message

    Des parenthèses à open(), c'est une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open("determinants.txt") as fp: liste_determinants=fp.readlines()
    print(liste_determinants)
    ['le,masculin\n', 'la,feminin\n', 'les,pluriel\n', "l',voyelle\n", 'un,masculin\n', 'une,feminin\n', 'des,pluriel\n', "d',voyelle\n", 'du,masculin\n', 'de la,feminin\n', "de l',voyelle\n", 'ce,masculin\n', 'cet,masculin\n', 'cette,feminin\n', 'ces,pluriel\n', 'mon,masculin\n', 'ton,masculin\n', 'son,masculin\n', 'ma,feminin\n', 'ta,feminin\n', 'sa,feminin\n', 'mes,pluriel\n', 'tes,pluriel\n', 'ses,pluriel\n', 'notre,neutre\n', 'votre,neutre\n', 'leur,masculin\n', 'nos,pluriel\n', 'vos,pluriel\n', 'leurs,pluriel']

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import random
     
    piece=("la chambre", "le salon", "la cuisine", "la pièce centrale")
    qualite=("grande", "petite", "moyenne")
    verbe=("marche", "rampe", "court")
     
    p=random.choice(piece).split()
    q=random.choice(qualite)
    v=random.choice(verbe)
    print("Machine %s dans %s %s %s" % (v, p[0], q, " ".join(p[1:])))
    Merci beaucoup oui il faudrait en effet que je parte de quelque chose de basique à améliorer. En effet c'est pas très claire, mais le principe est la. Ensuite essayé qu'il aille piocher dans mes listes de mots en fichier texte, je vais essayer d'y rajouter les déterminants, comme ci dessus et essayer de lui faire associer, le mot chambre par exemple à des déterminants masculin la ma etc.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Des parenthèses à open(), c'est une fonction[/QUOTE]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open("determinants.txt") as fp: liste_determinants=fp.readlines()
    print(liste_determinants)
    ['le,masculin\n', 'la,feminin\n', 'les,pluriel\n', "l',voyelle\n", 'un,masculin\n', 'une,feminin\n', 'des,pluriel\n', "d',voyelle\n", 'du,masculin\n', 'de la,feminin\n', "de l',voyelle\n", 'ce,masculin\n', 'cet,masculin\n', 'cette,feminin\n', 'ces,pluriel\n', 'mon,masculin\n', 'ton,masculin\n', 'son,masculin\n', 'ma,feminin\n', 'ta,feminin\n', 'sa,feminin\n', 'mes,pluriel\n', 'tes,pluriel\n', 'ses,pluriel\n', 'notre,neutre\n', 'votre,neutre\n', 'leur,masculin\n', 'nos,pluriel\n', 'vos,pluriel\n', 'leurs,pluriel']

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import random
     
    piece=("la chambre", "le salon", "la cuisine", "la pièce centrale")
    qualite=("grande", "petite", "moyenne")
    verbe=("marche", "rampe", "court")
     
    p=random.choice(piece).split()
    q=random.choice(qualite)
    v=random.choice(verbe)
    print("Machine %s dans %s %s %s" % (v, p[0], q, " ".join(p[1:])))
    Merci beaucoup oui il faudrait en effet que je parte de quelque chose de basique à améliorer. En effet c'est pas très claire, mais le principe est la. Ensuite essayé qu'il aille piocher dans mes listes de mots en fichier texte, je vais essayer d'y rajouter les déterminants, comme ci dessus et essayer de lui faire associer, le mot chambre par exemple à des déterminants masculin la ma etc.

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    Je viens de remarquer un truc au niveau de l'erreur initiale. Je lis "Input In [28], in <cell line: 2>()".
    La présence de "cell" me fait penser que tu travailles dans un notebook type jupyter et donc que ton code est divisé sur plusieurs cellules.
    Il faudrait que ton code soit dans une seule cellule, avec le respect de l'indentation, à mon avis (je ne pense pas que l'on puisse diviser une classe sur plusieurs cellules).

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Du coup plutôt

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import os
    import sys
    import random
     
    class main:
     
            liste_determinants = list(open(r'determinants.txt', "r").read().splitlines())
            liste_negatif = list(open(r'qualites.txt', "r").read().splitlines())
            liste_positif = list(open(r'qualites.txt', "r").read().splitlines())
            liste_sujet_verbe = list(open(r'verbes.txt', "r").read().splitlines())
            liste_noms_communs = list(open(r'pieces.txt', "r").read().splitlines())
            liste_resultat=[]
            choix = None
            determinants = None
            nom_commun = None
            positif = None
            negatif = None
            classification = ['masculin', 'feminin'] #'neutre', 'pluriel', 'voyelle'
            tendance = 50; #tendance negative a 100, neutre a 50, positive a 0
    i=1
    while i<= 5: #nombre de phrases a generer
     
     
                    if choix == None:
                            choix = random.choice(classification)
     
                    while choix !=  determinants.split(',')[1]:
                            determinants=random.choice(list(open(r'determinants.txt', "r").read().splitlines()))
     
                    if tendance < random.randint(0,100):
                            while choix != positif.split(',')[1]:
                                    positif=random.choice(list(open(r'qualites.txt', "r").read().splitlines()))
                                    adjectif=positif
     
                    else:
                            while choix !=  negatif.split(',')[1]:
                                    negatif=random.choice(list(open(r'qualites.txt', "r").read().splitlines()))
                                    adjectif=negatif
     
                    while choix !=  nom_commun.split(',')[1]:
                            nom_commun=random.choice(list(open(r'pieces.txt', "r").read().splitlines())
     
                    phrase=random.choice(liste_sujet_verbe)+' '+determinants.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
                    liste_resultat.append(phrase)
                    print (phrase)
                    i=i+1
                    choix = None
                    determinants = None
                    nom_commun = None
                    positif = None
                    negatif = None
     
    resultat = open('resultat.txt', "w")
    resultat.write('\n'.join(liste_resultat))
    print('\nResultat : '+ resultat.name)
    Deja plus la même erreur :

    Input In [3]
    phrase=random.choice(liste_sujet_verbe)+' '+determinants.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
    ^
    SyntaxError: invalid syntax

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caesarjulius Voir le message
    Deja plus la même erreur :

    Input In [3]
    phrase=random.choice(liste_sujet_verbe)+' '+determinants.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
    ^
    SyntaxError: invalid syntax
    L'erreur se trouve sur la ligne d'avant nom_commun=random.choice(list(open(r'pieces.txt', "r").read().splitlines()). Manque une parenthèse fermante. Python pense donc que l'instruction se continue sur celle-là mais comme ce n'est pas le cas, ça donne une erreur de syntaxe.

    Et tu t'obstines avec ce class. Il n'y a rien de plus horripilant qu'un type à qui on explique pourquoi il ne faut pas faire de cette façon, où on prend du temps à lui pondre un exemple minimaliste de ce qui marche, et qui revient quand-même ensuite avec sa bouse.
    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]

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    L'erreur se trouve sur la ligne d'avant nom_commun=random.choice(list(open(r'pieces.txt', "r").read().splitlines()). Manque une parenthèse fermante. Python pense donc que l'instruction se continue sur celle-là mais comme ce n'est pas le cas, ça donne une erreur de syntaxe.

    Et tu t'obstines avec ce class. Il n'y a rien de plus horripilant qu'un type à qui on explique pourquoi il ne faut pas faire de cette façon, où on prend du temps à lui pondre un exemple minimaliste de ce qui marche, et qui revient quand-même ensuite avec sa bouse.
    Je fais au mieux avec ce que j'ai, j'ai pas de solutions pour gérer autrement que par class au vu de la config actuelle. Et je répondais simplement à Umfred.

    J'ai modifé le premier script que tu m'a donné pour faire intervenir mes fichiers texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    piece= "pieces1.txt"
    qualite= "qualites.txt"
    verbe= "verbes.txt"
    p= (random.choice(open("pieces1.txt","r").read().splitlines()))
    q= (random.choice(open("qualites.txt","r").read().splitlines()))
    v= (random.choice(open("verbes.txt","r").read().splitlines()))
    print("Je %s dans %s %s" % (v, p, q))
    Sur ma "bouse" j'ai maintenant (après rajout de la parenthèse manquante) :

    NameError Traceback (most recent call last)
    Input In [7], in <cell line: 21>()
    20 i=1
    21 while i<= 5: #nombre de phrases a generer
    ---> 24 if choix == None:
    25 choix = random.choice(classification)
    27 while choix != determinants.split(',')[1]:

    NameError: name 'choix' is not defined

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caesarjulius Voir le message
    j'ai pas de solutions pour gérer autrement que par class au vu de la config actuelle

    Admettons (j'ai effectivement vu récemment un intervenant qui évoluait dans un milieu où on n'admettait pas de fonction, uniquement des classes). Mais dans ce cas, si tu dois passer par une classe, alors passe par une classe. Construits ta classe, mets-lui des attributs et méthodes dont elle a besoin (et c'est au minimum une méthode sinon elle est inutile). Mais tu ne peux pas écrire...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class toto:
    	for i in range(10): print(i)
    ... en disant "voilà j'ai créé une classe" alors qu'en réalité la classe ne fait rien, ne stocke rien, n'a aucun effet dans le programme tandis que la boucle n'est exécutée qu'une fois (lorsque Python parse cette partie du code) et qu'en réalité ça se déroule exactement (enfin visuellement parlant) comme si on écrivait simplement
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in range(10): print(i)
    Donc quand une instruction est inutile, au mieux elle est inutile et au pire elle fout la zone. Donc on la vire, au pire on ne perd rien et au mieux on y gagne un code qui fonctionne.

    Citation Envoyé par Caesarjulius Voir le message
    J'ai modifé le premier script que tu m'a donné pour faire intervenir mes fichiers texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    piece= "pieces1.txt"
    qualite= "qualites.txt"
    verbe= "verbes.txt"
    p= (random.choice(open("pieces1.txt","r").read().splitlines()))
    q= (random.choice(open("qualites.txt","r").read().splitlines()))
    v= (random.choice(open("verbes.txt","r").read().splitlines()))
    print("Je %s dans %s %s" % (v, p, q))
    Manque la fermeture des fichiers. Sauf en utilisant with ils ne se ferment pas tout seuls. Et pas besoin de ces parenthèses externes, l'opérateur d'affectation "=" a la priorité la plus basse (quoi qu'on écrive à sa droite, toute l'instruction sera utilisée avant que le résultat soit affecté à la variable).

    Citation Envoyé par Caesarjulius Voir le message
    Sur ma "bouse" j'ai maintenant (après rajout de la parenthèse manquante) :

    NameError Traceback (most recent call last)
    Input In [7], in <cell line: 21>()
    20 i=1
    21 while i<= 5: #nombre de phrases a generer
    ---> 24 if choix == None:
    25 choix = random.choice(classification)
    27 while choix != determinants.split(',')[1]:

    NameError: name 'choix' is not defined
    Ben si tu n'as pas créé "choix" tu ne peux pas l'évaluer. Certes tu l'as créé en ligne 14... sauf que la ligne 14 c'est un bloc indenté donc Python l'interprète comme faisant partie de la classe tandis qu'ensuite ce n'est plus indenté donc tu n'es plus dans la classe donc hors de celle-ci, "choix" n'existe pas.
    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class toto:
    	xxx=123
     
    print(xxx)
    Voilà ce que je voulais dire en parlant d'instruction inutile qui ne peuvent que détraquer le truc. Donc que veux-tu qu'on te dise quand tu t'obstines à écrire un code incorrect (selon les règles de syntaxe) et que Python ne peut donc pas exécuter correctement? Si tu veux des calins tu vas sur "forum des calins" mais en venant sur "forum développez" c'est que tu veux (à priori) progresser.

    Et on n'utilise pas "==" (ni évidemment "!=") pour comparer avec None. None c'est un état, pas une valeur. Pour ça on utilise "is" ou "is not" => https://peps.python.org/pep-0008/#pr...ecommendations.
    Pareil, avec "==" ça peut marcher... mais ça peut aussi ne pas marcher.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> class toto:
    ...     def __eq__(self, x): return True
    ... 
    >>> a=toto()
    >>> a
    <__main__.toto object at 0x7fcd18930ca0>		# C'est un objet donc ce n'est pas None
    >>> a is None
    False							# On est d'accord
    >>> a == None
    True							# Et voilà comment on plante un code...
    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]

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    [/QUOTE] Voilà ce que je voulais dire en parlant d'instruction inutile qui ne peuvent que détraquer le truc. Donc que veux-tu qu'on te dise quand tu t'obstines à écrire un code incorrect (selon les règles de syntaxe) et que Python ne peut donc pas exécuter correctement? Si tu veux des calins tu vas sur "forum des calins" mais en venant sur "forum développez" c'est que tu veux (à priori) progresser.[/QUOTE]

    Bien sur je comprends ton agacement. Bien sur que le but est de progresser.

    Donc en faite je vire le class main qui ne sert à rien et écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import os
    import sys
    import random
     
     
     
    liste_determinants = list(open(r'determinants.txt', "r").read().splitlines())
    liste_negatif = list(open(r'qualites.txt', "r").read().splitlines())
    liste_positif = list(open(r'qualites.txt', "r").read().splitlines())
    liste_sujet_verbe = list(open(r'verbes.txt', "r").read().splitlines())
    liste_noms_communs = list(open(r'pieces.txt', "r").read().splitlines())
    liste_resultat=[]
    revient au même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    piece= "pieces1.txt"
    qualite= "qualites.txt"
    verbe= "verbes.txt"
    p= random.choice(open("pieces1.txt","r").read().splitlines())
    q= random.choice(open("qualites.txt","r").read().splitlines())
    v= random.choice(open("verbes.txt","r").read().splitlines())
    print("Je %s dans %s %s" % (v, p, q))
    Ok c'est cool je comprends mieux.
    En effet corriger ses erreurs et travailler sur de bonnes bases participe à l'apprentissage. Au moins j'essais de comprendre.

    ---------------------------------------------------------------------------
    AttributeError Traceback (most recent call last)
    Input In [22], in <cell line: 23>()
    26 if choix == None:
    27 choix = random.choice(classification)
    ---> 29 while choix != determinants.split(',')[1]:
    30 determinants=random.choice(list(open(r'determinants.txt', "r").read().splitlines()))
    32 if tendance < random.randint(0,30):

    AttributeError: 'NoneType' object has no attribute 'split'

    peut être en rapport avec None ?

    Trying to call the split() method on a None value is what causes the error

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Sve@r Voir le message

    Manque la fermeture des fichiers. Sauf en utilisant with ils ne se ferment pas tout seuls. Et pas besoin de ces parenthèses externes, l'opérateur d'affectation "=" a la priorité la plus basse (quoi qu'on écrive à sa droite, toute l'instruction sera utilisée avant que le résultat soit affecté à la variable)
    Du coup With intervient avant le open ? fonctionne avec random.choice ?

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    respecte les indentations telles qu'elles étaient dans la source que tu as copié
    Ceci-dit, le source est pour du python2.7.9, et avec python3.x il y a des choses qui ont changé comme le fait de mettre obligatoire des parenthèses lors d'un print; et on peut supprimer la classe si on n'en a pas besoin.
    Le source modifié ainsi donne:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import os
    import sys
    import random
     
    liste_determinants = list(open(r'dictionnaires\determinants.txt', "r"), encoding="utf-8".read().splitlines())
    liste_negatif = list(open(r'dictionnaires\negatif.txt', "r", encoding="utf-8").read().splitlines())
    liste_positif = list(open(r'dictionnaires\positif.txt', "r", encoding="utf-8").read().splitlines())
    liste_sujet_verbe = list(open(r'dictionnaires\sujet_verbe.txt', "r", encoding="utf-8").read().splitlines())
    liste_noms_communs = list(open(r'dictionnaires\noms_communs.txt', "r", encoding="utf-8").read().splitlines())
    liste_resultat=[]
    choix = 'null'
    determinant = 'null,null'
    nom_commun = 'null,null'
    positif = 'null,null'
    negatif = 'null,null'
    classification = ['masculin', 'feminin'] #'neutre', 'pluriel', 'voyelle'
    tendance = 50; #tendance negative a 100, neutre a 50, positive a 0
     
    i=1
    while i<= 30: #nombre de phrases a generer
     
     
            if choix == 'null':
                    choix = random.choice(classification)
     
            while choix !=  determinant.split(',')[1]:
                    determinant=random.choice(liste_determinants)
     
            if tendance < random.randint(0,100):		
                    while choix !=  positif.split(',')[1]:
                            positif=random.choice(liste_positif)
                            adjectif=positif
     
            else:
                    while choix !=  negatif.split(',')[1]:
                            negatif=random.choice(liste_negatif)
                            adjectif=negatif
     
            while choix !=  nom_commun.split(',')[1]:
                    nom_commun=random.choice(liste_noms_communs)
     
            phrase=random.choice(liste_sujet_verbe)+' '+determinant.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
            liste_resultat.append(phrase)
            print(phrase)
            i=i+1
            choix = 'null'
            determinant = 'null,null'
            nom_commun = 'null,null'
            positif = 'null,null'
            negatif = 'null,null'
     
    resultat = open('resultat.txt', "w")
    resultat.write('\n'.join(liste_resultat))
    resultat.close()
    print('\nResultat : '+ resultat.name)
    Après il faut apporter les modifications que l'on t'as indiqué, essentiellement adapter le chemin de tes fichiers texte.
    Et surtout tout mettre dans UNE SEULE CELLULE si tu utilises Jupyter Notebook (je n'ai pas vu de réponse à mon interrogation sur ce sujet dans ta réponse précédente)

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par umfred Voir le message
    respecte les indentations telles qu'elles étaient dans la source que tu as copié
    Ceci-dit, le source est pour du python2.7.9, et avec python3.x il y a des choses qui ont changé comme le fait de mettre obligatoire des parenthèses lors d'un print; et on peut supprimer la classe si on n'en a pas besoin.
    Le source modifié ainsi donne:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import os
    import sys
    import random
     
    liste_determinants = list(open(r'dictionnaires\determinants.txt', "rb").read().splitlines())
    liste_negatif = list(open(r'dictionnaires\negatif.txt', "rb").read().splitlines())
    liste_positif = list(open(r'dictionnaires\positif.txt', "rb").read().splitlines())
    liste_sujet_verbe = list(open(r'dictionnaires\sujet_verbe.txt', "rb").read().splitlines())
    liste_noms_communs = list(open(r'dictionnaires\noms_communs.txt', "rb").read().splitlines())
    liste_resultat=[]
    choix = 'null'
    determinant = 'null,null'
    nom_commun = 'null,null'
    positif = 'null,null'
    negatif = 'null,null'
    classification = ['masculin', 'feminin'] #'neutre', 'pluriel', 'voyelle'
    tendance = 50; #tendance negative a 100, neutre a 50, positive a 0
     
    i=1
    while i<= 30: #nombre de phrases a generer
     
     
            if choix == 'null':
                    choix = random.choice(classification)
     
            while choix !=  determinant.split(',')[1]:
                    determinant=random.choice(liste_determinants)
     
            if tendance < random.randint(0,100):		
                    while choix !=  positif.split(',')[1]:
                            positif=random.choice(liste_positif)
                            adjectif=positif
     
            else:
                    while choix !=  negatif.split(',')[1]:
                            negatif=random.choice(liste_negatif)
                            adjectif=negatif
     
            while choix !=  nom_commun.split(',')[1]:
                    nom_commun=random.choice(liste_noms_communs)
     
            phrase=random.choice(liste_sujet_verbe)+' '+determinant.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
            liste_resultat.append(phrase)
            print phrase
            i=i+1
            choix = 'null'
            determinant = 'null,null'
            nom_commun = 'null,null'
            positif = 'null,null'
            negatif = 'null,null'
     
    resultat = open('resultat.txt', "w")
    resultat.write('\n'.join(liste_resultat))
    resultat.close()
    print('\nResultat : '+ resultat.name)
    Après il faut apporter les modifications que l'on t'as indiqué, essentiellement adapter le chemin de tes fichiers texte.
    Et surtout tout mettre dans UNE SEULE CELLULE si tu utilises Jupyter Notebook (je n'ai pas vu de réponse à mon interrogation sur ce sujet dans ta réponse précédente)
    Oui je suis désolé, je ne pouvais accéder à tous les messages sur le navigateur opéra. (bizarrement) J'ai switch.
    En effet j'ai corrigé cette question. j'ai tout regroupé dans une seul cellule. Oui je suis sur Notebook Jupyter. Je ne savais pas qu'il fallait tout indexer dans la même cellule du moins je comprends pourquoi dans ce cas de figures. J'imagine que par exemple les Import peuvent être fait dans une cellule à part.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Novembre 2022
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Finalement ce sont mes lacunes de bases qui m'empêchent de comprendre par moi même. Malgré tout j'ai beaucoup appris de ces erreurs, et surtout à vouloir modifier un code qui n'est pas le miens dont je ne connais pas la structure.

    Finalement cela fonctionne. Du moins je n'ai pas d'erreur. Je dois encore modifier la structure pour adapter les phrases et mes fichiers texte.
    Inverser les choses et réadapter sans erreur.


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import os
    import sys
    import random
     
    liste_determinants = list(open(r'determinants.txt', "r").read().splitlines())
    liste_negatif = list(open(r'qualites.txt', "r").read().splitlines())
    liste_positif = list(open(r'qualites.txt', "r").read().splitlines())
    liste_sujet_verbe = list(open(r'verbes.txt', "r").read().splitlines())
    liste_noms_communs = list(open(r'pieces.txt', "r").read().splitlines())
    liste_resultat=[]
    choix = 'null'
    determinant = 'null,null'
    nom_commun = 'null,null'
    positif = 'null,null'
    negatif = 'null,null'
    classification = ['masculin', 'feminin'] #'neutre', 'pluriel', 'voyelle'
    tendance = 50; #tendance negative a 100, neutre a 50, positive a 0
     
    i=1
    while i<= 30: #nombre de phrases a generer
     
     
            if choix == 'null':
                    choix = random.choice(classification)
     
            while choix !=  determinant.split(',')[1]:
                    determinant=random.choice(liste_determinants)
     
            if tendance < random.randint(0,100):        
                    while choix !=  positif.split(',')[1]:
                            positif=random.choice(liste_positif)
                            adjectif=positif
     
            else:
                    while choix !=  negatif.split(',')[1]:
                            negatif=random.choice(liste_negatif)
                            adjectif=negatif
     
            while choix !=  nom_commun.split(',')[1]:
                    nom_commun=random.choice(liste_noms_communs)
     
            phrase=random.choice(liste_sujet_verbe)+' '+determinant.split(',')[0]+' '+adjectif.split(',')[0]+' '+nom_commun.split(',')[0]
            liste_resultat.append(phrase)
            print (phrase)
            i=i+1
            choix = 'null'
            determinant = 'null,null'
            nom_commun = 'null,null'
            positif = 'null,null'
            negatif = 'null,null'
     
    resultat = open('resultat.txt', "w")
    resultat.write('\n'.join(liste_resultat))
    resultat.close()
    print('\nResultat : '+ resultat.name)
    nettoie sa bien équipée Véranda
    travaille ce sombre Cabinet
    joue une bien équipée Salle de bain
    lis un grand Comble
    plie le linge la bien équipée Véranda
    plie le linge ta bien équipée Séjour
    me change sa bien équipée Mezzanine
    me divertis la bien équipée Ouvroir
    travaille le moderne Grenier
    Etudier la bien équipée Buanderie
    fais mon lit mon spacieux Solarium
    fais mon lit ce sombre Grenier
    Epousseter sa bien équipée Garde-robe
    repasse une bien équipée Salle de réception
    repasse leur sombre Atelier
    recois des invités ce bruyant Garde-manger
    nettoie du mal équipé Atelier
    rêve la bien équipée Office
    lave leur sale Grenier
    dors une bien équipée Terrasse
    travaille mon meublé Garage
    me divertis la bien équipée Cave
    nettoie la bien équipée Chapelle
    fais mon lit de la bien équipée Loggia
    me change cet négligé Bureau
    lave cet tranquille Vestibule
    répare ta bien équipée Mezzanine
    fais mon lit un sombre Toilette
    nettoie ta bien équipée Salle à manger
    recois des invités du propre Vestibule

    Resultat : resultat.txt

    Du charabia mais c'est déjà ca
    Je vous remercie de votre patience et de votre temps, Sve@r, umfred

  19. #19
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Caesarjulius Voir le message
    Du coup With intervient avant le open ? fonctionne avec random.choice ?
    Non non non, with c'est pas avec choice. choice c'est un truc, with c'en est un autre.
    with c'est un gestionnaire de contexte. Ca implique un bloc et ça garantit qu'en quittant le bloc, le contexte sera nettoyé. Si le contexte c'est une ouverture de fichier alors en quittant le bloc l'ouverture sera annulée (ie fichier fermé). Si le contexte c'est un changement de dossier alors en quittant le bloc le changement sera annulé (on revient dans le dossier d'origine).

    Exemple de base
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fp=open("ficher", "r"):
    print(fp.closed)
    # ... ici fichier ouvert...
    # ... ici fichier ouvert...
    # ... ici fichier ouvert...
    fp.close()
    print(fp.closed)
    # ... ici fichier fermé...

    Exemple avec with
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with open("ficher", "r") as fp:
    	print(fp.closed)
    	# ... ici, dans le bloc, fichier ouvert...
    	# ... ici, dans le bloc, fichier ouvert...
    	# ... ici, dans le bloc, fichier ouvert...
    print(fp.closed)
    # ... ici, plus dans le bloc, fichier fermé...
    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]

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    J'ai apporté une correction au code, j'avais oublié les parenthèses du print(phrase) dans le code, et j'ai modifié l'ouverture des fichiers.
    oui les import peuvent être mis dans un cellule à part, mais si il y a des parties indentés, elles doivent toutes être dans la même cellule, l'indentation c'est un bloc d'instruction;

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/07/2012, 15h40
  2. [GD] Problème police opentype sur génération de texte en image
    Par Sseubb dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 29/03/2007, 17h03
  3. Problème Génération fichier texte
    Par veenie dans le forum Oracle
    Réponses: 5
    Dernier message: 18/05/2006, 11h21
  4. [conseil] script de génération de mots de passe
    Par spilliaert dans le forum Langage
    Réponses: 11
    Dernier message: 07/02/2006, 20h10
  5. [Mail] Script perso de Newsletter : petit problème
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 12/11/2005, 13h31

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