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()