Différences entre les versions de « Utilisateur:Thomas »

De {}
Aller à la navigation Aller à la recherche
Ligne 329 : Ligne 329 :
 
===Dernier énoncé===
 
===Dernier énoncé===
 
Le programme ci-dessous marche  
 
Le programme ci-dessous marche  
<source lang="python">
+
<syntaxhighlight lang="python">
 
#!/usr/bin/env python
 
#!/usr/bin/env python
 
# -*- coding: utf-8 -*-
 
# -*- coding: utf-8 -*-
Ligne 683 : Ligne 683 :
 
teteLecture.close()
 
teteLecture.close()
  
</source>
+
</syntaxhighlight>

Version du 7 novembre 2019 à 08:18

Poésie binaire

Poème de 6 vers, de 4 pieds chacun (en binaire ASCII):

100110011001011110011010000011001011100100110100111101001101001110111111011101110011000110101000101001100110010101000001000011110000111011101100001111000011001010100010000110111011010100111110000111101101100001110100111001011101110111010001000001100100110111111011101101110110010100011011110101110111011001010100000110110111010011110011111001111010011101111110111001000000111010000110111101011101110010000011001111110010110000111011101100100010000011100101101111110110111000011101110000110111101001110010110000111011101110011110011011011111110010110110111010011110011111010011001010101110

La traduction :

Les éditions

"Le Canapé"

m'avaient donné

une mission :

un grand roman

transformiste

Bonjour Python

Opérations sur les chaînes de caractères

Créer un programme qui agit sur le poème écrit au premier cours.

Je voudrais créer un programme qui transforme les "a" en "aaaaah",

(la référence en vidéo -> [1])

et qui transforme une lettre sur 2 en Capitale, pour donner un style ado en train de muer.


Ou alors un programme qui rajoute "xx" à la fin des mots qui finissent par "a", comme dans "chanmax" et qui rajoute "ss" à la fin des mots qui terminent par "s" comme dans "cooloss". Si le mot modifié se trouve en fin de vers, alors on rajoute une ligne intercalaire qui fait "Cooloss !" ou "Chanmax !" selon la fin du vers précédent (et qui fait "Stylé !" à la fin des vers qui se terminent par "é".

OU ALORS le programme ultime qui rajoute les chanmax, cooloss et stylé et ensuite demande à l'utilisateur s'il.elle veut prendre un lysopaïne, qui transforme les a en aaaah. Si oui, alors exécuter la première partie (changer les a en aaaah et alterner capitales et bas de casse).

Le programme lysopaïne.py :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print("Tu veux un lysopaine ?")
reponse = raw_input()
reponse = str(reponse.lower())

if reponse == "oui" :
    import re

    f= open("poeme.txt", "r")

    poeme = f.read()

    poeme = poeme.lower()

    #transforme les a en aaaah
    lyso = re.sub("a", "aaaah", poeme)

    # boucle qui imprime 1 caractère sur 2 en capitale
    i = 1
    poeme = ""
    while i < len(lyso):
        poeme = poeme + lyso[i-1].upper() + lyso[i].lower()
        i += 2

    print(poeme)
    f.close()

else:
    print("Ben tant pis pour toi.")
Tu veux un lysopaine ?
oui
LeS EdItIoNs
"Le cAaAaHnAaAaHpE"
m'aAaAhVaAaAhIeNt dOnNe
uNe mIsSiOn :
uN GrAaAaHnD RoMaAaAhN
TrAaAaHnSfOrMiStE.
cEsT VrAaAaHi oU FaAaAhUx
uN Ou zErO
CeSt nOiR Ou bLaAaAhNc
lAaAaHrMe aAaAhMmE BiEn
lE CoDe bInAaAaHiRe
tOuTs eSt tReS ClAaAaHiRe
l oRdInAaAaHtEuR
CiRcUiTs iMmEnSeS
ZeRoS Et uNs
rYtHmEnT Le cOd(e).
rEpEtItIoN,
zErOs eT UnS
SaAaAhUt aAaAh lAaAaH LiGnE,
c'eSt uN SeCrEt.
ÉCrIrE à l'oRdInAaAaHtEuR,
oU ├á lAaAaH MaAaAhIn ?
├ëcRiRe sUr lE PaAaAhSs├®,
Ou sUr dEmAaAaHiN ?
ÉCrIrE DeS MoTs,
Ou uN Po├¿Me ?
ÉcRiRe sUr l'aAaAhMoUr,
Ou sUr lAaAaH HaAaAhInE ?
PlUs dE PoInTs
dÔÇÖiNtErRoGaAaAhTiOn,
├®CrIvEz jUsTe
uNe aAaAhSsErTiOn !

Le programme de Violette (loup-garou.py):

#!/usr/bin/env python
#coding: utf-8
'''Un programme qui
- demande le nom de l'utilisateur qui sera enregistré comme nom de poète
- rajoute aouuuu quand il y a a lettre a
- rajoute grrrrrrrrrr quand il y a la lettre g '''

print("Quel est ton nom, poète.esse ?")
nom = raw_input()

import re

f= open("poeme.txt", "r+")

poeme = f.read()

#poeme = re.sub('a', "aouuuu", poeme)
poeme = re.sub('([aA])', r"\1ouuuu", poeme)
poeme = re.sub('([gG])', r"\1rrrrrrrrrr", poeme)

nom = re.sub('([aA])', r"\1ouuuu", nom)
nom = re.sub('([gG])', r"\1rrrrrrrrrr", nom)
print(poeme)
print("Signé, " + nom + " le loup grrrrrrrrrraouuuurou")

f.close()
Quel est ton nom, po├¿te.esse ?
Gaspard
Les editions
"Le Caouuuunaouuuupe"
m'aouuuuvaouuuuient donne
une mission :
un grrrrrrrrrrraouuuund romaouuuun
traouuuunsformiste.
Cest vraouuuui ou faouuuuux
un ou zero
Cest noir ou blaouuuunc
laouuuurme aouuuumme bien
le code binaouuuuire
touts est tres claouuuuire
L ORDINAouuuuTEUR
Circuits Immenses
Zeros et uns
Rythment le cod(e).
Repetition,
Zeros et uns
Saouuuuut aouuuu laouuuu ligrrrrrrrrrrne,
C'est un secret.
Écrire à l'ordinaouuuuteur,
ou ├á laouuuu maouuuuin ?
├ëcrire sur le paouuuuss├®,
ou sur demaouuuuin ?
Écrire des mots,
ou un po├¿me ?
Écrire sur l'aouuuumour,
ou sur laouuuu haouuuuine ?
Plus de points
dÔÇÖinterrogrrrrrrrrrraouuuution,
├®crivez juste
une aouuuussertion !
Sign├®, Grrrrrrrrrraouuuuspaouuuurd le loup grrrrrrrrrraouuuurou

Le programme de Stijn (pluie.py):

#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''demander est ce qu’il pleut? oui: changer tous les a e i o u -> ! non: print chance '''

print("Est-ce qu'il pleut ?")
print("(oui/non)")
pluie = str(raw_input())
pluie = pluie.lower()

import re

f= open("poeme.txt", "r+")
poeme = f.read()

if pluie == "oui":
    oui = re.sub('a|e|i|o|u', "!", poeme, flags=re.IGNORECASE)
    print(oui)
    print("Quel temps pourri...")
else:
    print("Chouette alors !")

f.close()
Est-ce qu'il pleut ?
(oui/non)
oui
L!s !d!t!!ns
"L! C!n!p!"
m'!v!!!nt d!nn!
!n! m!ss!!n :
!n gr!nd r!m!n
tr!nsf!rm!st!.
C!st vr!! !! f!!x
!n !! z!r!
C!st n!!r !! bl!nc
l!rm! !mm! b!!n
l! c!d! b!n!!r!
t!!ts !st tr!s cl!!r!
L !RD!N!T!!R
C!rc!!ts !mm!ns!s
Z!r!s !t !ns
Rythm!nt l! c!d(!).
R!p!t!t!!n,
Z!r!s !t !ns
S!!t ! l! l!gn!,
C'!st !n s!cr!t.
Écr!r! à l'!rd!n!t!!r,
!! ├á l! m!!n ?
├ëcr!r! s!r l! p!ss├®,
!! s!r d!m!!n ?
Écr!r! d!s m!ts,
!! !n p!├¿m! ?
Écr!r! s!r l'!m!!r,
!! s!r l! h!!n! ?
Pl!s d! p!!nts
dÔÇÖ!nt!rr!g!t!!n,
├®cr!v!z j!st!
!n! !ss!rt!!n !
Quel temps pourri...

Le programme de Léna (inverse.py)

#!/usr/bin/env python
#coding: utf-8

'''inverser 1er et dernier mot de chaque vers + inverser la première et la dernière lettre du premier mot'''

#ouvrir le fichier
f = open("poeme.txt", "r")

poeme = f.read()

#décomposer le tableau en lignes
lines = poeme.splitlines()
for line in lines:
    mots = line.split(" ")

#inverser la dernière lettre et la première lettre du dernier mot (qui deviendra le premier ensuite)
    last_mot = mots[len(mots)-1]
    last_lettre = last_mot[0]
    last_mot = last_mot.replace(last_mot[0], last_mot[len(last_mot)-1], 1)
    #petite technique : utiliser [:x] pour afficher toute la chaîne/le tableau jusqu'à l'indice donné
    #fonctionne aussi avec [x:] pour afficher tout après l'indice donné
    last_mot = last_mot[:len(last_mot)-1] + last_lettre

#inverser le premier et le dernier mot de chaque ligne
    momo = mots[0]
    mots[0] = last_mot
    mots[len(mots)-1] = momo

#petite correction pour que les lignes de 1 mot soient modifiées (sinon, vu que le programme remplace le dernier mot par le premier il annule le changement de lettres effectué avant et seulement sur le dernier mot de chauqe ligne)
    if len(mots)-1 == 0:
        mots[len(mots)-1] = last_mot

    new_line = str()

#reconstituer la ligne youpi
    for mot in mots:
        new_line = new_line + " " + mot

    print(new_line)

f.close()
 sditione Les
 "anapeC "Le
 eonnd m'avaient
 : mission une
 nomar grand un
 .ransformistet
 xauf vrai ou Cest
 oerz ou un
 clanb noir ou Cest
 nieb amme larme
 einairb code le
 elairc est tres touts
 RRDINATEUO L
 smmenseI Circuits
 snu et Zeros
 .od(e)c le Rythment
 ,epetitionR
 snu et Zeros
 ,ignel a la Saut
 .ecrets un C'est
 ,'ordinateurl à Écrire
 ? à la main ou
 ,ass├®p sur le ├ëcrire
 ? sur demain ou
 ,otsm des Écrire
 ? un poème ou
 ,'amourl sur Écrire
 ? sur la haine ou
 sointp de Plus
 ,ÔÇÖinterrogationd
 eustj ├®crivez
 ! assertion une

Dernier énoncé

Le programme ci-dessous marche

#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''Le programme demande à l'utilisateur le nombre de vers à generer.
Le programme genère autant de vers aleatoires que le nombre entre par l'utilisateur, à partir des mots du poème source et en utilisant la formule syntaxique "article + nom + complement + verbe"
BONUS
Une fois que ça marche deux ameliorations possibles:
* accorder en genre et en nombre les phrases (ortographe inclusive ou non)
* avoir plusieurs formules syntaxiques et les choisir aleatoirement (ou selon une certaine logique) à chaque vers
'''
article = ['les', 'le', 'la', 'un', 'une', 'des', 'de', 'du', 'l\'', 'd\'']
nom = ['ordinateur', 'editions', 'canape', 'mission', 'zero', 'repetition', 'circuits', 'tout', 'code', 'larme' 'saut', 'ligne', 'secret', 'main', 'passe', 'demain', 'mots', 'poeme', 'amour', 'haine', 'interrogation', 'points', 'plus', 'assertion']
complement = ['grand', 'transformiste', 'vrai', 'juste', 'faux', 'noir', 'blanc', 'immenses', 'binaire', 'clair', 'bien']
verbe = ['donne', 'est', 'm\'avaient', 'rythment', 'ecrire', 'ecrivez']
ponctuation = ['…', '!', '?', '.', ',', ':']

import random
import re
from time import sleep
print("Combien j't'en sers ?")
nbre = raw_input()
nbre = int(nbre)

with open('poeme.txt', 'r') as teteLecture:
    poeme = teteLecture.read()

for i in range(0, nbre):
    vers = print(random.choice(article) + " " + random.choice(complement) + " " + random.choice(nom) + " " + random.choice(verbe) + " " + random.choice(ponctuation))

    pt_s_espace = ['.', ',', '…']

    if ponctuation == '.'|','|'…':
        vers = re.sub(' (.|,|…)', r'\1', vers)

    #sleep(0.1)
teteLecture.close()
</source>

Le programme marche à peu près en l'état, mais il faut corriger les espaces avant les points et les virgules ainsi que les articles avec apostrophes qui se mettent devant les mots qui commencent par une consonne. 
Pour régler l'accord en nombre on peut mettre tous les mots au singulier et n'accorder que quand les pronoms pluriels (les, des) sont choisis au hasard.

<source lang="text">
Combien j't'en sers ?
19
la immenses secret ecrivez !
un noir haine ecrivez ,
une vrai larmesaut ecrivez 
la transformiste zero ecrire !
les transformiste passe ecrivez !
une faux code donne ?
l' transformiste interrogation rythment ?
de clair amour donne 
de blanc plus ecrivez .
le grand amour ecrivez !
l' binaire ordinateur m'avaient ,
les vrai tout est 
du grand canape donne ,
l' binaire ligne donne ?
les clair mots est 
les clair plus m'avaient :
un faux code ecrire !
les grand haine m'avaient ?
un vrai code ecrire !
</source>

Version plus améliorée du programme :

(exemples ci-dessous)
<source lang="text">
Transformiste poeme noir
L'immense plus
Le secret ecrit
Les binaires demains rythment
Les mains,
Une haine binaire et une juste haine
L'immense interrogation
Claire repetition juste
Une repetition transformiste :
Des mains, les haines, un plus !
Les secrets blancs et le faux demain
Les missions blanches,
L'assertion vraie ?
Claire edition transformiste
Un saut juste
Claire mission claire
L'ordinateur juste ou une noire assertion
Blancs ordinateurs clairs
Une grande mission ecrit !
Une noire assertion ecrit,
Les points immenses et blancs
Le poeme ecrit
Noir passe faux
L'edition.
La vraie edition m'avait donne ?
</source>

<source lang="text">
Un mot binaire ou immense
Les blancs codes
Vraies interrogations immenses
Une ligne, des demains, les zeros.
Des sauts vrais ou des fausses assertions
Les transformistes codes ecrivent,
Une transformiste edition...
Les fausses assertions sont
Le plus rythme ?
Les assertions claires ou la vraie edition !
La binaire edition donne
Un code, le circuit, les interrogations
Les binaires secrets m'avaient donne...
L'interrogation ?
Justes mots immenses
</source>

<source lang="text">
Le secret grand :
Des points immenses ou les blancs ordinateurs...
Une haine fausse...
Les justes interrogations sont ?
Le juste secret rythme
Les larmes noires ou immenses
Une haine grande ou une fausse larme
Les mains
</source>

Le programme amélioré :

<source lang="text">
#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''Le programme demande à l'utilisateur le nombre de vers à generer.
Le programme genère autant de vers aleatoires que le nombre entre par l'utilisateur, à partir des mots du poème source et en utilisant la formule syntaxique "article + nom + complement + verbe"
BONUS
Une fois que ça marche deux ameliorations possibles:
* accorder en genre et en nombre les phrases (ortographe inclusive ou non)
* avoir plusieurs formules syntaxiques et les choisir aleatoirement (ou selon une certaine logique) à chaque vers
'''
##définition des listes de mots à utiliser ensuite

#essayer de faire des listes à 2 dimensions (tableaux de tableaux)
singulier = ['le', 'la', 'un', 'une']
pluriel = ['les', 'des']
voyelle = ['l\'', 'd\'']
article = [singulier, singulier, pluriel]
#article = [singulier]

masculin = ['ordinateur', 'canape', 'zero', 'circuit', 'code', 'saut', 'secret', 'passe', 'demain', 'mot', 'poeme', 'amour', 'point', 'plus']
feminin = ['edition', 'mission', 'repetition', 'larme', 'ligne', 'main', 'haine', 'interrogation', 'assertion']
gender = [masculin, feminin]

complement = ['grand', 'transformiste', 'vrai', 'juste', 'faux', 'noir', 'blanc', 'immense', 'binaire', 'clair']
complement_f = ['grande', 'transformiste', 'vraie', 'juste', 'fausse', 'noire', 'blanche', 'immense', 'binaire', 'claire']

verbe = ['donne', 'est', 'm\'avait donne', 'rythme', 'ecrit']
verbe_pl = ['donnent', 'sont', 'm\'avaient donne', 'rythment', 'ecrivent']

ponctuation = [',', ':', '', '', '', '', '', '', '...', '!', '?', '.']
liaison = ['et', 'ou']

autre = ['tout', 'de', 'bien']

import random
import re
from time import sleep

print("Combien j't'en sers ?")
nbre = raw_input()
nbre = int(nbre)

with open('poeme.txt', 'r') as teteLecture:
    poeme = teteLecture.read()

vers = ""
vers_list = []

#générer les composants des vers
for i in range(0, nbre):
    #première fournée
    genre = random.choice(gender)

    if genre == feminin:
        singulier = ['une', 'la']
        s_nom = random.choice(feminin)
        s_complement = random.choice(complement_f)
        s_complementBis = random.choice(complement_f)
        s_article = random.choice(article)

    else:
        singulier = ['le', 'un']
        s_nom = random.choice(masculin)
        s_complement = random.choice(complement)
        s_complementBis = random.choice(complement)
        s_article = random.choice(article)

    if s_article == pluriel:
        s_nom = s_nom +'s'

        if s_complement == 'immense':
            s_articleBis = 'd\''
        else:
            s_articleBis = random.choice(pluriel)

        s_article = random.choice(pluriel)

        s_complement = s_complement + 's'
        s_complementBis = s_complementBis + 's'
        s_verbe = random.choice(verbe_pl)
        s_ponctuation = random.choice(ponctuation)

    else:
        s_verbe = random.choice(verbe)
        if s_complement == 'immense':
            s_articleBis = 'l\''
        else:
            s_articleBis = random.choice(singulier)

        if re.match('^[aeiouy]', s_nom) is not None:
            s_article = 'l\''
        else :
            s_article = random.choice(singulier)

    s_ponctuation = random.choice(ponctuation)

    #deuxième fournée
    genre2 = random.choice(gender)

    if genre2 == feminin:
        singulier = ['une', 'la']
        s_nom2 = random.choice(feminin)
        s_complement2 = random.choice(complement_f)
        s_article2 = random.choice(article)

    else:
        singulier = ['le', 'un']
        s_nom2 = random.choice(masculin)
        s_complement2 = random.choice(complement)
        s_article2 = random.choice(article)

    if s_article2 == pluriel:
        s_nom2 = s_nom2 +'s'
        s_article2 = random.choice(pluriel)
        s_complement2 = s_complement2 + 's'

        if s_complement2 == 'immense':
            s_articleBis2 = 'd\''
        else:
            s_articleBis2 = random.choice(pluriel)
    else:
        if s_complement2 == 'immense':
            s_articleBis2 = 'l\''
        else:
            s_articleBis2 = random.choice(singulier)

        if re.match('^[aeiouy]', s_nom) is not None:
            s_article2 = 'l\''
        else :
            s_article2 = random.choice(singulier)

    #troisième fournée
    genre3 = random.choice(gender)

    if genre3 == feminin:
        singulier = ['une', 'la']
        s_nom3 = random.choice(feminin)
        s_complement3 = random.choice(complement_f)
        s_article3 = random.choice(article)

    else:
        singulier = ['le', 'un']
        s_nom3 = random.choice(masculin)
        s_complement3 = random.choice(complement)
        s_article3 = random.choice(article)

    if s_article3 == pluriel:
        s_nom3 = s_nom3 +'s'
        s_complement3 = s_complement3 + 's'
        s_article3 = random.choice(pluriel)

    else:
        if re.match('^[aeiouy]', s_nom) is not None:
            s_article3 = 'l\''
        else :
            s_article3 = random.choice(singulier)

#composition des vers
    choix = random.randint(1, 3)
    if choix == 1:
        vers = s_articleBis + " " + s_complement + " " + s_nom + s_ponctuation
    else:
        vers = s_articleBis + " " + s_complement + " " + s_nom + " " + s_verbe + s_ponctuation

    if choix == 1:
        vers2 = s_article + " " + s_nom + s_ponctuation
    else:
        vers2 = s_article + " " + s_nom + " " + s_verbe + s_ponctuation

    if choix == 1:
        vers3 = s_article + " " + s_nom + s_ponctuation
    else:
        vers3 = s_article + " " + s_nom + " " + s_complement + s_ponctuation

    vers4 = s_complement + " " + s_nom + " " + s_complementBis
    vers5 = s_article + " " + s_nom + ", " + s_article2 + " " + s_nom2 + ", " + s_article3 + " " + s_nom3 + s_ponctuation
    vers6 = s_article + " " + s_nom + " " + s_complement + " " + random.choice(liaison) + " " + s_articleBis2 + " " + s_complement2 + " " + s_nom2 + s_ponctuation
    vers7 = s_article + " " + s_nom + " " + s_complement + " " + random.choice(liaison) + " " + s_complementBis

    #crée une liste de vers possible et choisit un vers. (il y a plusieurs fois vers pour influencer la probabilité que vers apparaissent plus souvent que les autres)
    vers_list = [vers, vers, vers2, vers3, vers4, vers5, vers6, vers7]
    #vers_list = [vers]

    '''print('s_nom :')
    print(type(s_nom))
    print('s_article :')
    print(type(s_article))
    print('s_complement :')
    print(type(s_complement))
    print('s_nom2 :')
    print(type(s_nom2))
    print('s_article2 :')
    print(type(s_article2))
    print('s_complement2 :')
    print(type(s_complement2))
    print('s_nom3 :')
    print(type(s_nom3))
    print('s_article3 :')
    print(type(s_article3))
    print('s_complement3 :')
    print(type(s_complement3))
    print('s_ponctuation :')
    print(type(s_ponctuation))
    print('s_verbe :')
    print(type(s_verbe))'''

    oui = random.choice(vers_list)

    #met la première lettre du vers en capitale
    oui = oui[0].upper() + oui[1:]
    #met une espace avant les caractères qui en nécessitent une typographiquement
    oui = re.sub(r'(:|\?|!)$', r' \1', oui)
    #supprime les erreurs
    oui = re.sub('fauxs', 'faux', oui)
    oui = re.sub('pluss', 'plus', oui)
    oui = re.sub('(.\') ', r'\1', oui)

    print(oui)
    #sleep(0.1)

#verbes ne se mettent pas au pluriel à la fin de vers
#pas de point sur la dernière ligne

teteLecture.close()