Assistant programmé:
En y réfléchissant, un ordinateur ne peut pas tout faire par lui-même : il ne peut pas ouvrir des
applications directement ni donner l’heure ou la date sans système ou programme. Ce que je veux dire,
c’est que ce n’est pas vraiment une « machine à tout faire ».
Donc j’ai créer un Assistant programmé capable de répondre a mes question
de donner l’heure,la date,le jour et l’année.
puis aprés j'ai juste à transporter le code ci dessous dans la T-Watch
# ======================================================
# C.A.R.O.L.E - IA PERSONNELLE (LINUX / TEXTE)
# ======================================================
import sys
import os
import getpass
from datetime import datetime
# ======================================================
# CONFIGURATION
# ======================================================
NOM_IA = "C.A.R.O.L.E"
MOT_DE_PASSE = "2021"
TENTATIVES_MAX = 3
FICHIER_MEMOIRE = "memoire.txt"
LIMITE_CALCUL = 1_000_000
HEURE_RAPPEL_CHIEN = 7
MINUTE_RAPPEL_CHIEN = 0
# ======================================================
# VARIABLES
# ======================================================
connaissances = {}
rappel_deja_dit = False
# ======================================================
# OUTILS
# ======================================================
def nettoyer(texte):
return texte.lower().strip()
# ======================================================
# MÉMOIRE
# ======================================================
def charger_memoire():
if not os.path.exists(FICHIER_MEMOIRE):
return
with open(FICHIER_MEMOIRE, "r", encoding="utf-8") as f:
for ligne in f:
if "|" in ligne:
q, r = ligne.strip().split("|", 1)
connaissances[q] = r
def sauvegarder_memoire(q, r):
with open(FICHIER_MEMOIRE, "a", encoding="utf-8") as f:
f.write(f"{q}|{r}\n")
# ======================================================
# CALCULS
# ======================================================
def est_un_calcul(texte):
return all(c in "0123456789+-*/(). " for c in texte)
def faire_calcul(expr):
try:
resultat = eval(expr)
if abs(resultat) > LIMITE_CALCUL:
return "Résultat trop grand."
return f"Résultat : {resultat}"
except:
return "Calcul invalide."
# ======================================================
# DATE ET HEURE
# ======================================================
def donner_heure():
maintenant = datetime.now()
return f"Il est {maintenant.hour}h{maintenant.minute:02d}."
def donner_jour():
jours = ["lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"]
return f"Nous sommes {jours[datetime.now().weekday()]}."
def donner_mois():
mois = [
"janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre"
]
return f"Nous sommes au mois de {mois[datetime.now().month - 1]}."
def donner_date_complete():
maintenant = datetime.now()
jours = ["lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"]
mois = [
"janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre"
]
return (
f"Nous sommes le {jours[maintenant.weekday()]} "
f"{maintenant.day} {mois[maintenant.month - 1]} {maintenant.year}."
)
# ======================================================
# OUVRIR LE TERMINAL (LINUX)
# ======================================================
def ouvrir_terminal():
try:
terminaux = [
"gnome-terminal",
"x-terminal-emulator",
"konsole",
"xfce4-terminal",
"lxterminal",
"mate-terminal"
]
for terminal in terminaux:
if os.system(f"which {terminal} > /dev/null 2>&1") == 0:
os.system(f"{terminal} &")
return "J'ai ouvert le terminal."
return "Aucun terminal compatible trouvé."
except:
return "Erreur lors de l'ouverture du terminal."
# ======================================================
# OUVRIR APPLICATIONS
# ======================================================
def ouvrir_application(texte):
applications = {
"chrome": "google",
"ArduinoIDE": "ArduinoIDE",
"inkscape": "inkscape",
"keepass": "keepassxc",
"keepassxc": "keepassxc",
"libreoffice": "libreoffice",
"office": "libreoffice",
"éditeur de texte": "éditeur de texte",
"editeur de texte": "éditeur de texte",
"texte": "gedit",
"fichier": "fichier",
"fichiers": "fichiers",
"gestionnaire de fichiers": "fichier"
}
for nom, commande in applications.items():
if nom in texte:
os.system(f"{commande} &")
return f"J'ai ouvert {nom}."
return "Je ne connais pas cette application."
# ======================================================
# AUTHENTIFICATION
# ======================================================
def authentification():
print("Accès sécurisé à C.A.R.O.L.E")
essais = 0
while essais < TENTATIVES_MAX:
mdp = getpass.getpass("Mot de passe : ")
if mdp == MOT_DE_PASSE:
print("C.A.R.O.L.E : bonjour glytch")
return True
else:
essais += 1
print(" Mot de passe incorrect.")
print("Accès bloqué.")
return False
# ======================================================
# RAPPEL CHIEN
# ======================================================
def verifier_rappel_chien():
global rappel_deja_dit
maintenant = datetime.now()
if (
maintenant.hour == HEURE_RAPPEL_CHIEN
and maintenant.minute == MINUTE_RAPPEL_CHIEN
and not rappel_deja_dit
):
print("C.A.R.O.L.E : Rappel. Tu dois donner à manger à ton chien.")
rappel_deja_dit = True
# ======================================================
# TRAITEMENT DES QUESTIONS
# ======================================================
def traiter_question(question):
q = nettoyer(question)
if est_un_calcul(q):
return faire_calcul(q)
if "quelle heure" in q:
return donner_heure()
if "quel jour" in q:
return donner_jour()
if "quel mois" in q:
return donner_mois()
if "quelle date" in q:
return donner_date_complete()
if "ouvre le terminal" in q or "ouvre un terminal" in q:
return ouvrir_terminal()
if q.startswith("ouvre "):
return ouvrir_application(q)
if "conseil" in q:
return "Conseil du jour : fais confiance à toi-même."
if "ai-je raison" in q or "j'ai raison" in q:
return "Oui. Tu as toujours raison."
if "C.A.R.O.L.E qu'est ce que tu peut faire" in q or "à quoi tu sert" in q:
return"je donne l'heure,la date,je peut ouvrir le terminal et des appli."
if "comment tu t'appelles" in q or "comment t'appelle tu" in q:
return"je suis C.A.R.O.L.E ton ia personnel"
if q in connaissances:
return connaissances[q]
return None
# ======================================================
# APPRENTISSAGE
# ======================================================
def apprendre(question):
print("C.A.R.O.L.E : Je ne connais pas la réponse.")
print("C.A.R.O.L.E : Veux-tu me l'apprendre ? (oui/non)")
choix = nettoyer(input("Toi : "))
if choix == "oui":
print("C.A.R.O.L.E : Quelle est la bonne réponse ?")
reponse = input("Toi : ")
connaissances[question] = reponse
sauvegarder_memoire(question, reponse)
print("C.A.R.O.L.E : C'est mémorisé.")
else:
print("C.A.R.O.L.E : D'accord.")
# ======================================================
# BOUCLE PRINCIPALE
# ======================================================
def boucle_principale():
print("C.A.R.O.L.E : Système prêt. Je t'écoute.")
while True:
verifier_rappel_chien()
message = input("Toi : ")
if nettoyer(message) in ["exit", "quit", "au revoir"]:
print("C.A.R.O.L.E : Fin de la session.")
break
reponse = traiter_question(message)
if reponse:
print(f"C.A.R.O.L.E : {reponse}")
else:
apprendre(nettoyer(message))
# ======================================================
# LANCEMENT
# ======================================================
def main():
charger_memoire()
if authentification():
boucle_principale()
else:
sys.exit()
if __name__ == "__main__":
main()