- Réviseur en python - Problème

a marqué ce sujet comme résolu.

Bon j'ai recommencé.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 #-*- coding: utf-8 -*-

import os
import pickle
from random import *
import csv

dico1={}
type(dico1)



demande=True
while(demande):

    wordvo=input("mettez votre voc fr ici :")
    wordvf=input("mettez la traduction ici :")
    dico1[wordvf] = wordvo
    question=input("voulez vous mettre plus de voc ?")
    if question=='oui':
        demande=True

    else:
        demande = False




def writ():
    w=csv.writer(open("donnees.txt",'a'))
    for key, val in dict.items(dico1):
        w.writerow([key, val])

with open('donnees.txt', 'ab') as fichier:
    mon_pickler = pickle.Pickler(fichier)
    mon_pickler.dump(dico1)
# enregistrement



cles = []

rep=10
while(rep<20):

    for i in dico1.keys():
        cles.append(i)

    temp = choice(cles)

    print(dico1[temp])
    trad=input("écrivez la traduction :")
    print(trad==temp)
    while(trad!=temp):
        print ("c'est faux recommence")
        trad=input("écrivez la traduction :")

Pour le moment ce code enregistre les mots dans un fichier nommé donnees.txt. Quand je lui donne du voc il me le fait réviser. Mais ce qu'il ne fait pas c'est prendre le voc enregistrer dans le fichier et me le faire réviser avec les autres. Comment faire pour qu'il le fasse ?

Bonjour, je voudrai m'excuser car tout vos programme marche, c'est juste moi qui est une bille.

Kje: j'ai une question sur ton programme que tu as envoyer, tu enregistre dans un fichier ".p" comment je fais si je veux rajouter du voc manuellement dans le fichier ?

merci de votre aide

Juste au passage, et un peu hors sujet. Si tu comptes vraiment te servir d'un outil de ce genre, je te conseille vivement de te tourner vers un service tel que Quizlet, qui fait très très bien le job, avec plus de fonctionnalités que de besoin.

Après, si c'est surtout pour t'entraîner, très bien. (=

Ou bien faire un bon vieux write(mot + sep + trad + '\n')

Puis un readlines, un for dessus, avec du split sur le sep, et on récupère le mot et sa traduction ^^

Folaefolc

Dans ce cas je préfère préciser que le + sur des chaînes de caractères sont un truc à éviter, parce que globalement inefficace.

La façon pythonique d'écrire cette ligne serait :

1
'{}{}{}\n'.format(mot, sep, trad)

La raison profonde derrière ça, c'est que chaque + correspond à la création (allocation + remplissage par copie) d'une chaîne de caractères temporaire, qui sera détruite presque immédiatement après. Dans une boucle, la différence peut rapidement devenir sensible.

+3 -0

La façon pythonique d'écrire cette ligne serait :

1
'{}{}{}\n'.format(mot, sep, trad)

La raison profonde derrière ça, c'est que chaque + correspond à la création (allocation + remplissage par copie) d'une chaîne de caractères temporaire, qui sera détruite presque immédiatement après. Dans une boucle, la différence peut rapidement devenir sensible.

nohar

Notons qu'avec la PEP 498 qui sera présente dans Python 3.6 (dans ~ 1 ans), il sera possible de faire de l'interpolation de chaine et donc probablement que le plus clair sera de ré-écrire cette ligne :

1
f'{mot}{sep}{trad}\n'
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte