analogie~20171216-175813.py 1.6 KB

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