Composer des textes

Dans cette section nous allons mettre en pratique les concepts

  • listes de mots

  • choix aléatoire dans une liste avec choice()

  • nombre entier aléatoire avec randint(a, b)

  • reste de la division (modulo) %

  • boucle for

  • fonction input()

Le module random

Le module random met à disposition des fonctions pour calculer des valeurs aléatoires. Nous importons deux fonctions.

from random import choice, randint

La fonction choice permet de choisir un élément aléatoire d’une liste.
On pourrait l’utiliser pour programmer un jeu de pierre-papier-ciseaux.

choice(['pierre', 'papier', 'ciseaux'])
'ciseaux'

La fonction randint(a, b) permet de choisir un entier aléatoire dans l’intervalle [a, b]. On pourrait l’utiliser pour simuler un dé.

randint(1, 6)
2

Créer des phrases

Nous définissons des listes pour différentes catégories de mots:

  • noms de personne

  • villes

  • adverbes

  • verbes

noms = ['Bill', 'Steve', 'Guido', 'Ada', 'Grace']
villes = ['Paris', 'Tokyo', 'Lausanne', 'Lutry', 'Dubai']
adverbes = ['joyeusement', 'tristement', 'temporairement', 'toujours']
verbes = ['dort', 'vit', 'séjourne', 'travaille', 'voyage', 'se balade', 'étudie']

Avec des mots choisis aléatoirement dans ces listes, nous créons des phrases aléatoires.

for i in range(3):
    nom = choice(noms)
    ville = choice(villes)
    verbe = choice(verbes)
    adverbe = choice(adverbes)
    
    print(nom, verbe, adverbe, 'à', ville+'.')
Grace dort temporairement à Tokyo.
Bill se balade temporairement à Paris.
Steve séjourne toujours à Paris.

Écrire un horoscope

Le premier horoscope basé sur les signes du zodiaque dans la presse française serait paru dans Marie-Claire en 1935.

En général les horoscopes sont plus souvent positifs que négatifs et incitent à la conformité.

signes = ['Bélier', 'Taureau', 'Gémeaux', 'Cancer', 'Lion', 'Vierge',
         'Balance', 'Scorption', 'Sagittaire', 'Capricorne', 'Verseau', 'Poissons']

sujets = ['amour', 'argent', 'travail', 'famille', 'santé']
adverbes = ['très', 'peu', 'souvent', 'rarement', 'incroyablement', 'absolument']
adjectifs = ['avantageux', 'profitable', 'rebondissant', 'variable', 
             'avantageux', 'magnifique', 'fluctuant']
conseils = ['continuer', 'faire attention', 'faire attention', 'profiter', 'se dépêcher']

Nous composons un horoscope en choisissant aléatoirement:

  • un sujet

  • adverbe

  • adjectif

et en ajoutant un conseil (encourageant une conformité).

for signe in signes[:6]:
    sujet = choice(sujets)
    adverbe = choice(adverbes)
    adjectif = choice(adjectifs)
    conseil = choice(conseils)
    
    print(signe)
    print('-', sujet + ':', adverbe, adjectif + ',', conseil + '!')
    print()
Bélier
- amour: incroyablement variable, faire attention!

Taureau
- famille: très avantageux, se dépêcher!

Gémeaux
- amour: rarement avantageux, faire attention!

Cancer
- famille: souvent variable, faire attention!

Lion
- santé: très avantageux, faire attention!

Vierge
- amour: souvent variable, se dépêcher!

Conjuguer un verbe

La conjugaison de beaucoup de verbes est régulière.
Voici une fonction pour conjuguer un verbe en er.

def conjuger(verbe):
    print('je', verbe[:-2]+'e')
    print('tu', verbe[:-2]+'es')
    print('elle', verbe[:-2]+'e')
    print()
    print('nous', verbe[:-2]+'ons')
    print('vous', verbe[:-2]+'ez')
    print('elles', verbe[:-2]+'ent')
    
conjuger('parler')
je parle
tu parles
elle parle

nous parlons
vous parlez
elles parlent
conjuger('programmer')
je programme
tu programmes
elle programme

nous programmons
vous programmez
elles programment
conjuger('progresser')
je progresse
tu progresses
elle progresse

nous progressons
vous progressez
elles progressent

Exercice
Créer une fonction conjuger2() pour conjuger les verbes qui terminent en -ir.