analogie.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. # Analogie
  4. # Léon Lenclos 2017 (leon.lenclos(à)gmail.com)
  5. # Workshop OLA#5 à Synesthésie
  6. # organisé par Bachir Soussi Chiadmi avec An Mertens
  7. import csv
  8. import random
  9. def main():
  10. # on va creer une list d'objet Nom
  11. mots = []
  12. with open("Lexique382.txt") as lexique:
  13. # on lit dans un "tab separated values"
  14. lexique = csv.reader(lexique, delimiter='\t')
  15. for raw in lexique:
  16. # on y cherche les noms
  17. if raw[3] == "NOM":
  18. # et on les range dans mots
  19. mots.append(Nom(raw[0], raw[4], raw[5]))
  20. # on imprime la phrase
  21. output = "%s %s ce que %s %s." % \
  22. (random.choice(mots).det_mot_vrb(), \
  23. random.choice(mots).pre_mot(), \
  24. random.choice(mots).det_mot_vrb(), \
  25. random.choice(mots).pre_mot())
  26. output = output.capitalize()
  27. print(output)
  28. class Nom():
  29. def __init__(self, mot, genre, nombre):
  30. self.mot = mot
  31. self.genre = genre
  32. self.nombre = nombre
  33. def det(self):
  34. if self.nombre == 'p':
  35. return "les "
  36. elif self.mot[0] in ['a','à','e','é','è','ê','i','o','u','y','h']:
  37. return "l'"
  38. elif self.genre == 'f':
  39. return "la "
  40. else:
  41. return "le "
  42. def pre(self):
  43. if self.det() == "les ":
  44. return "aux "
  45. if self.det() == "le ":
  46. return "au "
  47. if self.det() == "la ":
  48. return "à la "
  49. if self.det() == "l'":
  50. return "à l'"
  51. def vrb(self):
  52. if self.nombre == "p":
  53. return "sont"
  54. else:
  55. return "est"
  56. def det_mot_vrb(self):
  57. return self.det() + self.mot + " " + self.vrb()
  58. def pre_mot(self):
  59. return self.pre() + self.mot
  60. main()