top of page
Anneaux lumineux au néon

CARNET DE BORD

FLASHCARDS

12/01/24

Pour cette première séance, je débute mon projet en définissant des objectifs précis, c'est-dire que je liste tout ce que je veux que mon programme soit capable de faire :

  • Proposer une interface d'accueil avec diverses propositions (créer un nouveau fichier, ajouter une fiche à un fichier et parcourir les fiches d'un fichier, entre autres)

  • Lorsque l'utilisateur sélectionne un fichier qu'il a précédemment créé, il peut soit le supprimer, soit le renommer, soit le parcourir, soit le modifier de façon à ajouter ou à supprimer une fiche et évidemment, il peut l'ouvrir pour débuter ses révisions

  • Proposer des niveaux de difficultés à l'utilisateur, selon lesquels il peut classer ses fiches (comme expliqué ci-dessus), de manière à programmer quand la question lui sera nouvellement posée (chaque niveau de complexité est associé à une durée)

  • Proposer la possibilité de créer un nombre illimité de fichiers et de fiches à l'utilisateur

19/01/24

Lors de cette séance, je souhaite en apprendre davantage sur la programmation de zones de saisie. Pour ce faire, je commence à me documenter. En cours, nous avons déjà étudié la fonction input() qui permet à l'utilisateur de renter des valeurs pour lancer un algorithme. Néanmoins, cette fonction ne me sera pas utile dans ce projet.

Je découvre dans un premier lieu la bibliothèque graphique tkinter. Pour programmer une zone de saisie, je dois l'importer dans mon programme. Puis, je me familiarise également avec le widget Entry. Celui-ci ne peut toutefois être utilisé que pour entrer une ligne unique de texte. Le nom du widget semble être un paramètre obligatoire car il permet de savoir comment la boîte de saisie s'affichera.

Je commence par essayer de programmer un champ de saisie avec une question simple : l'utilisateur doit insérer son niveau d'étude. Pour cela, je m'aide d'un cours en ligne d'informatique, où je trouve une liste de méthodes et d'options associées avec le widget Entry.

Mon algorithme se présente de cette manière là :

from tkinter import*

#libelle
fenetre=Tk()
libelle_etude=Label(fenetre, text="Entrez votre niveau d'étude :")
libelle_etude.pack()

#boite de saisie
nom=Entry(fenetre)
nom.pack(pady=13)

#affichage fenêtre et attente des interactions de l'usager
fenetre.mainloop()

- "pady" permet de placer le widget dans la fenêtre sur un axe y

- "pack()" est un gestionnaire de géométrie grâce auquel l'utilisateur pourra déplacer le widget sur la fenêtre

- Entry permet à l'utilisateur de saisir une ligne de texte

- La méthode mainloop() affiche le widget à l'écran et réagit en fonction des entrées de l'utilisateur

 

Voici la fenêtre qui s'affiche à son exécution :

Le seul problème que je rencontre est que mon programme permet bien d'écrire dans la zone de saisie, mais pas de rentrer la valeur en appuyant sur la touche "Entrer" du clavier. J'utilise alors la méthode 'bind()'. Je m'inspire de différents algorithmes que je rencontre au fur et à mesure de mes recherches.

from tkinter import*
import tkinter as tk
import tkinter as Label
import tkinter as Entry

#libelle
fenetre=tk.Tk()
Label=tk.Tk()
libelle = Label(fenetre, text="Entrez votre niveau d'étude :")
libelle.pack()
libelle_Entry.pack()

def texteEvent(event):
   lbl.configure(text = "Vous êtes en ="+ entry.get())

#boite de saisie
entry=Entry(fenetre)
nom=entry(fenetre)
nom.pack(pady=13)

#association de l'évènement texteEvent au champ de saisie
entry.bind("<Return>", texteEvent)
"""lbl=Label(fenetre, text ="")"""
entry.pack()
lbl.pack()

#affichage fenêtre et attente des interactions de l'usager
fenetre.mainloop()

26/01/24

Aujourd'hui, je continue de programmer mes zones de saisie. Après un entretien avec mon professeur, je me dirige finalement vers la programmation des zones de saisie sans tkinter. En effet, je reviendrai sur le code précédent plus tard dans le projet. Pour la séance d'aujourd'hui, je vais m'appuyer sur la fonction input(). Voici un état de mon code :

import csv


questions=[]
reponses=[]

entree_questions=str(float(input("Entrez votre question")))
questions.append(entree_questions)
entree_reponses=str(float(input("Entrez la réponse")))
reponses.append(entree_reponses)
questions_reponses=('Votre question est : ' + str(questions) , ' La réponse est : ' + str(reponses))

with open ('questions_reponses','w',newline = "") as fichier:
  save=csv.reader(fichier)
  writer=csv.writer(fichier)
  """fichier=open('questions_reponses','w')"""
  writer.writerow(questions_reponses)

print('Votre question est :' , questions[0] , ' La réponse est :', reponses[0])

En exécutant ce code, un fichier CSV s'est créé dans le même dossier où se trouve ce fichier Edupython. Voici ce qui s'affiche lorsque je l’exécute :

02/02/24

Mon professeur est absent pour cette séance mais nous avançons tout de même sur nos projets. Je suis assez embêtée de ne pas pouvoir lui parler de mon petit algorithme car maintenant que j'ai cette base de code, je ne suis pas sûre de la prochaine étape. Je décide alors de simplement l'améliorer.

Je commence par modifier les deux lignes de code ci-dessous car elles ne permettent pas à l'utilisateur de rentrer des lettres, mais seulement des valeurs chiffrées.

entree_questions=str(float(input("Entrez votre question")))
questions.append(entree_questions)
entree_reponses=str(float(input("Entrez la réponse")))
reponses.append(entree_reponses)

Il me suffit seulement de retirer les fonctions str() et float() :

entree_questions=input("Entrez votre question")
questions.append(entree_questions)
entree_reponses=input("Entrez la réponse")
reponses.append(entree_reponses)

Ensuite, n'étant pas satisfaite de l'affichage sur le fichier CSV, je rajoute des indices après questions et reponses de manière à ce que les valeurs rentrées par l'utilisateur ne soient pas entre crochets car toute la liste s'afficherait à chaque fois.

Voici alors l'état de mon code après ces modifications :

import csv

questions=[]
reponses=[]

entree_questions=input("Entrez votre question")
questions.append(entree_questions)
entree_reponses=input("Entrez la réponse")
reponses.append(entree_reponses)
questions_reponses=('Votre question est : ' + str(questions[0]) , ' La réponse est : ' + str(reponses[0]))

with open ('questions_reponses','w',newline = "") as fichier:
  save=csv.reader(fichier)
  writer=csv.writer(fichier)
  """fichier=open('questions_reponses','w')"""
  writer.writerow(questions_reponses)

print('Votre question est :' , questions[0] ,' La réponse est :', reponses[0])

Voici un exemple à l'exécution :

09/02/24

Lors de cette courte séance, je réfléchis davantage à mon projet. Maintenant que j'ai un programme qui fonctionne et qui permet de créer un fichier CSV où l'utilisateur pourra insérer sa question et la réponse associée, je pense à des conditions if grâce auxquelles les fichiers pourraient être récupérés et ouverts si l'utilisateur le décide, ou simplement modifiés s'il souhaite les modifier. Voici une première version du code :

import csv

questions=[]
reponses=[]

entree_questions=input("Entrez votre question : ")
questions.append(entree_questions)

entree_reponses=input("Entrez la réponse : ")
reponses.append(entree_reponses)

questions_reponses=[[questions], [reponses]]

with open ('questions_reponses','w',newline = "") as fichier:
  save=csv.reader(fichier)
  writer=csv.writer(fichier)
  fichier=open('questions_reponses','w')
  writer.writerows(questions_reponses)

print('Votre question est :' , questions[0] ,' La réponse est :', reponses[0])

etudier=input("Voulez-vous étudier ? (Veuillez répondre par un OUI ou par un NON) : ")

if etudier == "OUI":
  fichier = open("questions_reponses", encoding="utf8")
  ligne = fichier.readline()
  question = ligne.strip().split(",")
  print("La question est : ",question[0])
  reponse_1=input('Votre réponse est : ')
  if reponse_1==reponses[0]:
       print("Vous avez raison")
  else:
       print("Vous avez tort")
  fichier.close()

if etudier == "NON":
  print("Alors pourquoi venir ?")

Voici ce qui s'affiche à l’exécution :

J'ai élaboré ce simple code en prenant exemple sur un petit algorithme que j'avais rédigé quand j'avais eu l'idée de mon projet. Ce code exécute une forme de quiz avec un score final. Le voici :

score=0

etudier=input("Voulez-vous étudier ? (Veuillez répondre par un OUI ou par un NON) : ")

questions_reponses=(('Pride and Prejudice', 'Jane Austen'),('Wuthering Heights', 'Emily Brontë'),('Anna Karenina', 'Tolstoï'))

if etudier == "OUI":
  for (question, solution) in questions_reponses:
       print("Qui est l'auteur de", question , "?")
       reponse = input('Votre réponse est : ')
       if reponse == solution:
           print('Vous avez raison')
           score=score+1
       else:
           print('Vous avez tort. La bonne réponse est :', solution)
       print()
  print ('Votre score est de',score,'sur',len(questions_reponses))
  if score==len(questions_reponses):
       print("Vous avez bien travaillé !")
  if score < len(questions_reponses):
       print("Vous devez encore réviser !!")

if etudier == "NON":
  print("Alors pourquoi venir ?")

Voici ce qui s'affiche à l’exécution :

09/02/24

Je souhaite améliorer le programme que j'avais commencé la semaine dernière et terminé plus tard dans la semaine. J'en arrive finalement à ce code mais qui ne fonctionne pas exactement comme je le souhaiterais.

import csv

questions=[]
reponses=[]

entree_questions=input("Entrez votre question : ")
questions.append(entree_questions)

entree_reponses=input("Entrez la réponse : ")
reponses.append(entree_reponses)

questions_reponses=[[questions], [reponses]]

with open ('questions_reponses','w',newline = "") as fichier:
  save=csv.reader(fichier)
  writer=csv.writer(fichier)
  fichier=open('questions_reponses','w')
  writer.writerows(questions_reponses)

print('Votre question est :' , questions[0] ,' La réponse est :', reponses[0])

etudier=input("Voulez-vous étudier ? (Veuillez répondre par un OUI ou par un NON) : ")

if etudier == "OUI":
  fichier = open("questions_reponses", encoding="utf8")
  ligne = fichier.readline()
  question = ligne.strip().split(",")
  print("La question est : ",question[0])
  reponse_1=input('Votre réponse est : ')
  if reponse_1==reponses[0]:
       print("Vous avez raison")
  else:
       print("Vous avez tort")
  fichier.close()

if etudier == "NON":
  print("Alors pourquoi venir ?")


etudier=input("Voulez-vous étudier ? (Veuillez répondre par un OUI ou par un NON) : ")

if etudier == "OUI":
  fichier = open("questions_reponses", encoding="utf8")
  ligne = fichier.readline()
  question = ligne.strip().split(",")
  print("La question est : ",question[0])
  reponse_1=input('Votre réponse est : ')
  solution=[]
  for ligne in fichier:
       elements = ligne.strip().split(",")
       solution.append(elements[-1])
       if reponse_1==solution:
           print("Vous avez raison")
       else:
           print("Vous avez tort. La bonne réponse est : " ,solution)
  fichier.close()

if etudier == "NON":
  print("Alors pourquoi venir ?")

Voici ce qui s'affiche dans la console à l’exécution :

16/02/24

Je réunis différents morceaux de codes rédigés depuis le début du lancement du projet. J'en viens à ce code :

import csv

questions=[]
reponses=[]

carte=input("Voulez-vous créer de nouvelles cartes ? (Veuillez répondre par un OUI ou par un NON) : ")

if carte == "OUI":
  entree_questions=input("Entrez votre question : ")
  questions.append(entree_questions)

  entree_reponses=input("Entrez la réponse : ")
  reponses.append(entree_reponses)

  questions_reponses=[[questions], [reponses]]

  with open ('questions_reponses','w',newline = "") as fichier:
       save=csv.reader(fichier)
       writer=csv.writer(fichier)
       fichier=open('questions_reponses','w')
       writer.writerows(questions_reponses)


  while carte=="OUI":
       paquet=input("Voulez-vous continuer à créer de nouvelles cartes ? (Veuillez répondre par un OUI ou par un NON) : ")

       if paquet=="OUI":
           entree_questions=input("Entrez une question : ")
           questions.append(entree_questions)

           entree_reponses=input("Entrez la réponse : ")
           reponses.append(entree_reponses)

           questions_reponses=(entree_questions,entree_reponses)

           with open ('questions_reponses','w',newline = "") as fichier:
               save=csv.reader(fichier)
               writer=csv.writer(fichier)
               fichier=open('questions_reponses','w')
               writer.writerows(questions_reponses)

       if paquet=="NON":
           etudier_1=input("Voulez-vous étudier ? (Veuillez répondre par un OUI ou par un NON) : ")

           if etudier_1 == "OUI":
               fichier = open("questions_reponses", encoding="utf8")
               ligne = fichier.readline()
               question = ligne.strip().split(",")
               print("La question est : ",question[0])
               reponse_1=input('Votre réponse est : ')
               solution=[]
               for ligne in fichier:
                   elements = ligne.strip().split(",")
                   solution.append(elements[-1])
                   if reponse_1==solution:
                       print("Vous avez raison")
                   else:
                       print("Vous avez tort. La bonne réponse est : " ,solution)
               fichier.close()

           if etudier_1 == "NON":
               print("Alors pourquoi venir ?")

if carte == "NON":
  print("Alors pourquoi venir ?")

  etudier_2=input("Voulez-vous étudier d'autres paquets ? (Veuillez répondre par un OUI ou par un NON) : ")

  if etudier_2=="OUI":
       for elements in questions_reponses:
           print("Répondez à cette question : ", questions[0])
           solution = input('Votre réponse est : ')
       if solution == reponses[0]:
           print('Vous avez raison')
           score=score+1
       else:
           print('Vous avez tort. La bonne réponse est :', reponses)
           print ('Votre score est de',score,'sur',len(questions_reponses))
       if score==len(questions_reponses):
           print("Vous avez bien travaillé !")
       if score < len(questions_reponses):
           print("Vous devez encore réviser !!")

  if etudier_2=="NON":
       print("Alors pourquoi venir ?")

08/03/24

Je reprends un code que j'avais commencé à écrire pendant la dernière séance et que j'avais ensuite continué pendant mes heures de libre. Je rencontre des problèmes lors de son exécution donc je tente de le faire fonctionner comme je le souhaiterais. En effet, si je décide de ne pas plus créer de nouvelles cartes après en avoir créer une, la boucle continue à l'infini si je réponds "NON" aux questions "Voulez-vous étudier ?" puis "Voulez-vous créer de nouvelles cartes ?". Le score ne marche également pas. Enfin, j'ignore comment interroger l’utilisateur sur la deuxième question qu'il a souhaité étudier, la première question se pose effectivement deux fois. Je ne sais donc pas comment faire car je ne peux guère écrire : print("La question est : ",question[0]) par exemple, ni, print("La question est : ",question).

En me plongeant à nouveau dans le code, je remarque que j'avais simplement oublié de définir la variable "score" en début de programme. J'ajoute alors score=0 au début du code.

import csv

questions=[]
reponses=[]

carte=input("Voulez-vous créer de nouvelles cartes ? (Veuillez répondre par un OUI ou par un NON) : ")

if carte == "OUI":
  entree_questions=input("Entrez votre question : ")
  questions.append(entree_questions)

  entree_reponses=input("Entrez la réponse : ")
  reponses.append(entree_reponses)

  questions_reponses=[[questions], [reponses]]

  with open ('questions_reponses','w',newline = "") as fichier:
       save=csv.reader(fichier)
       writer=csv.writer(fichier)
       fichier=open('questions_reponses','w')
       writer.writerows(questions_reponses)


  while carte=="OUI":
       paquet=input("Voulez-vous continuer à créer de nouvelles cartes ? (Veuillez répondre par un OUI ou par un NON) : ")

       if paquet=="OUI":
           entree_questions=input("Entrez une question : ")
           questions.append(entree_questions)

           entree_reponses=input("Entrez la réponse : ")
           reponses.append(entree_reponses)

           questions_reponses=(entree_questions,entree_reponses)

           with open ('questions_reponses','w',newline = "") as fichier:
               save=csv.reader(fichier)
               writer=csv.writer(fichier)
               fichier=open('questions_reponses','w')
               writer.writerows(questions_reponses)

       if paquet=="NON":
           etudier_1=input("Voulez-vous étudier ? (Veuillez répondre par un OUI ou par un NON) : ")

           if etudier_1 == "OUI":
               fichier = open("questions_reponses", encoding="utf8")
               ligne = fichier.readline()
               question = ligne.strip().split(",")
               print("La question est : ",question[0])
               reponse_1=input('Votre réponse est : ')
               solution=[]
               for ligne in fichier:
                   elements = ligne.strip().split(",")
                   solution.append(elements[-1])
                   if reponse_1==solution:
                       print("Vous avez raison")
                   else:
                       print("Vous avez tort. La bonne réponse est : " ,solution)
               fichier.close()

           if etudier_1 == "NON":
               print("Alors pourquoi venir ?")

if carte == "NON":
  print("Alors pourquoi venir ?")

  etudier_2=input("Voulez-vous étudier d'autres paquets ? (Veuillez répondre par un OUI ou par un NON) : ")

  if etudier_2=="OUI":
       for elements in questions_reponses:
           print("Répondez à cette question : ", questions[0])
           solution = input('Votre réponse est : ')
       if solution == reponses[0]:
           print('Vous avez raison')
           score=score+1
       else:
           print('Vous avez tort. La bonne réponse est :', reponses)
           print ('Votre score est de',score,'sur',len(questions_reponses))
       if score==len(questions_reponses):
           print("Vous avez bien travaillé !")
       if score < len(questions_reponses):
           print("Vous devez encore réviser !!")

  if etudier_2=="NON":
       print("Alors pourquoi venir ?")

Le code ne fonctionne pas. Voici deux exemples de ce qui s'affiche à son exécution :

bottom of page