analogie~20171217-121035.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. output = "%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. output = output.capitalize()
  23. print(output)
  24. class Nom():
  25. def __init__(self, mot, genre, nombre):
  26. self.mot = mot
  27. self.genre = genre
  28. self.nombre = nombre
  29. def det(self):
  30. if self.nombre == 'p':
  31. return "les "
  32. elif self.mot[0] in ['a','à','e','é','è','ê','i','o','u','y','h']:
  33. return "l'"
  34. elif self.genre == 'f':
  35. return "la "
  36. else:
  37. return "le "
  38. def pre(self):
  39. if self.det() == "les ":
  40. return "aux "
  41. if self.det() == "le ":
  42. return "au "
  43. if self.det() == "la ":
  44. return "à la "
  45. if self.det() == "l'":
  46. return "à l'"
  47. def vrb(self):
  48. if self.nombre == "p":
  49. return "sont"
  50. else:
  51. return "est"
  52. def det_mot_vrb(self):
  53. return self.det() + self.mot + " " + self.vrb()
  54. def pre_mot(self):
  55. return self.pre() + self.mot
  56. main()