Bonjour,
Il est parfaitement clair, le problème vient de toi, car tu n'as manifestement pas lu - ou compris - ton cours.ok je comprend mieux pourquoi il n'y avait pas de close() dans votre code, merci pour cette info.
Dans la question suivante, on me dit qu'il modifier la focntion pou r qu'elle ne fasse pas la différence entre minuscules et majuscules mais n'est-ce pas déjà le cas ? ( aurions-nous mal compris la question 1 ?) je dirais à mon prof que cet énoncé est très mal expliqué...![]()
je suis déolé mais je suis entirement d'accord avec fred1599 quand il dit que calculer une liste ne veut rien dire ...
+1Il est parfaitement clair, le problème vient de toi, car tu n'as manifestement pas lu - ou compris - ton cours.
Montrer tout d'abord votre code avec une fonction, celui que je présente est sans fonction, ça devrait pas poser de problèmeDans la question suivante
Qu'est-ce que cela veut dire pour vous?on me dit qu'il modifier la focntion pou r qu'elle ne fasse pas la différence entre minuscules et majuscules
Mettez vous seul dans le lot, l'étudiant c'est vous, le travail est le vôtre, pas le mien...aurions-nous mal compris la question 1 ?
Avez-vous regardé le résultat de mon code, ce qu'il renvoi ?mais n'est-ce pas déjà le cas ?
Oui mais il ne parle pas de cela, mais de l'incompréhension de ma réponse dans votre 1ère question et votre question concernant la question suivante.je suis déolé mais je suis entirement d'accord avec fred1599 quand il dit que calculer une liste ne veut rien dire ...
voila ce que j'ai :
seulement, la fonction ci-dessus renvoie bien les minuscules, les majuscules, les lettres avec accents sans les différencier non ?Code:def lettres(fichier): liste = [] f=open(fichier,"r") for line in f: for char in line: if char.isalpha() and char not in liste: liste.append(char) f.close() return liste
voila ce que j'ai obtenu pour mon fichier:
['l', 'e', 's', 'd', 'u', 'x', 'p', 'm', 'o', 'r', 'a', 'b', 'i', 'c', 'q', 'v', 't', 'n', 'C', 'y', 'f', 'j', 'g', 'h', 'I', 'é', 'è']
Si les caractères sont différenciés, on ajoute minuscule et majuscule dans la liste.seulement, la fonction ci-dessus renvoie bien les minuscules, les majuscules, les lettres avec accents sans les différencier non ?
Ce qu'on souhaite, c'est ne pas ajouter la majuscules, alors que la minuscule est déjà présente dans la liste.
exemple : c et C doit faire que seul le caractère c sera ajouté et non C
Bref en utilisant la méthode lower( ) de la classe string, ça doit pas poser de problèmes...
ah ok: en fait, ma liste de sortie sera faite de minuscules uniquement par exemple ?
vous suggérez donc de convertir tout le texte en minuscules et ceci avec lower() ? (juste pour info, lopposé de lower et bien upper() pour les majuscules (j'ai un doute))
c'est une bonne idée, je vais essayer comme ça
Ouiah ok: en fait, ma liste de sortie sera faite de minuscules uniquement par exemple ?
Ouivous suggérez donc de convertir tout le texte en minuscules et ceci avec lower() ? (juste pour info, lopposé de lower et bien upper() pour les majuscules (j'ai un doute))
Mercic'est une bonne idée
Bonjour,
Je vais ajouter mon grain de sel.
A défaut d’algorithme préalable, Vous pouvez aussi rajouter un commentaire à chaque ligne.
Mais dans tous les cas, un algorithme rédigé en détail reste et restera la meilleure méthode.
PS, pardon, je suis un peu décalé dans le temps.
Dernière modification par Dlzlogic ; 30/03/2013 à 16h13.
oui c'est vrai vous raison, ça peut aider
j'ai un petit souci : lower() ne peut pas s'appliquer ainsi ?
Code:def lettres_2(fichier): liste = [] f=open(fichier,"r") f.lower() for line in f: for char in line: if char.isalpha() and char not in liste: liste.append(char) f.close() return liste
Je pense qu'il faut imaginer ce que fait la fonction lower().
Je crois pas trop me tromper en conjecturant que, soit un caractère (sous-entendu entre 0 et 255).
Si il est compris entre 65 et 90, alors la machine lui rajoute 32.
f est une adresse de fichier, probablement un nombre sur 64 bits. La fonction lower est un membre de char, donc sur 8 bits, je n'ai aucune idée de ce qui pourra se passer en écrivant f.lower().
ah ok, ça pourrait poser probleme..
ou pourrait-je l'insérer alors ?
lower est une méthode de chaîne de caractères, elle s'applique donc aux chaînes et non aux fichiers évidemment, ça tombe sur le sens, si tu te concentres sur ce qu'on a vu avant.
C'est une méthode utilisable comme isalpha, de la même manière on pose la condition qui va bien...
Maintenant un peu de recherche dans la doc, t'aurais amener à la réponse.
ah mais oui bien sur! c'est bon ça fonctionne à présent, merci .
A propos, pour éviter les confusions, y'a t-il des méthodes propres aux fichiers (comme pour les dico par ex) ?
Merci
pou la question 3, si je comprend bien , il faut faire pareil que pour la 2 mais avec les accents ?
donC si je rencontre "Ë" on me redonne "e" ?
Oui, voir docA propos, pour éviter les confusions, y'a t-il des méthodes propres aux fichiers (comme pour les dico par ex) ?
J'ai la flemme de regarder si la question 3 a déjà été dictée, mais c'est le genre de question qui me semblerait logique...pou la question 3, si je comprend bien , il faut faire pareil que pour la 2 mais avec les accents ?
donC si je rencontre "Ë" on me redonne "e" ?
je vous la communique, pas de souci:
"Modifiez votre fonction lettres pour qu'elle identifie les lettres accentuées avec leurs variantes non accentuées.
Vous pouvez par exemple vous servir du dictionnaire suivant :
qui devrait suffire pour toutes les langues européennes."Code:correspondance = { 'á': 'a', 'à': 'a', 'ã': 'a', 'â': 'a', 'å': 'a', 'ä': 'a', 'ç': 'c', 'é': 'e', 'è': 'e', 'ë': 'e', 'ê': 'e', 'í': 'i', 'ì': 'i', 'ï': 'i', 'î': 'i', 'ñ': 'n', 'ð': 'd', 'ó': 'o', 'ò': 'o', 'õ': 'o', 'ô': 'o', 'ö': 'o', 'ø': 'o', 'ù': 'u', 'û': 'u', 'ú': 'u', 'ü': 'u', 'ý': 'y', 'ÿ': 'y'}
Oui c'est donc bien cela, même pas besoin de faire la table de correspondance, il vous l'offre.
ok , ça devrait aller , je vais essayer
Ca a bien fonctionné avec le dico , j'ai réutilisé une focntion créée auparavant pour y parvenir.
J'ai encore besoin de votre aide pour une autre question.
La voici:
"Écrivez maintenant une fonction qui calcule la liste des lettre présentes dans une liste de fichiers. (Autrement dit, au lieu de chercher dans un seul fichier, il faudra chercher dans plusieurs fichiers...)"
Pour les question d'avant, on rentrait l'unique fichier, on le passait en argument, masi ici comment faire ?
J''avais pensé à analyser tous les fichiers grâce a une boucle for mais sans grands résultats..
On pourrait peut-être transférer tous les fichiers dans un te analyser cet unique fichier mais la encore c'est assez difficile car je ne sais pas extraire le contenu (sauf avec readlines mais je ne veux pas que ce soit une liste en sortie )
Pourriez-vous me donner une piste svp ?
Bonjour,
Quel est l'élément logique qui relie les fichiers à examiner ?
euh ..je ne suis pas sur de tres bien comprendre votre question mais si vous demandez comment interroger plusieurs fichiers dans une meme, je penserais à une boucle
Mauvaise réponse.
J'ai très soigneusement choisi les termes de ma question.
Pour l'instant, on n'en est qu'à l'algorithme.
Parmi les 10000 fichiers qu'il y a dans votre machine comment savez-vous ceux qu'il faut examiner ?
c'est bien là que ça coince.Toutefois, je ne peut analyser que les fichiers ".txt"
Complément à ma réponse précédente.
Il y a une fonction que j'ai écrite il y a longtemps. Pour un tas de raisons, je n'ai pas pris le temps de faire une analyse suffisamment détaillée avant de commencer, c'est à dire écrire l'algorithme.
Il se trouve que j'y remets le nez, c'est là qu'on se rends compte de l'importance qu'il y a à exprimer les choses en français avant de commencer à écrire du code.
Votre réponse est arrivée entre-temps.
Donc, vous devez examiner tous les fichiers TXT de votre machine. Il n'y en a peut-être pas 10000, mais il y en a certainement beaucoup.
Alors ...
Dernière modification par Dlzlogic ; 31/03/2013 à 14h59.
si je continue dans mon idée, il faudrait que j'appelle tous les fichiers du type "fichiers.txt" ?
J'essaye justement de faire en sorte que "vous ne continuiez pas dans votre idée".
Ca veut dire quoi "appeler tous les fichiers ..." ?
"fichier.txt" n'est pas un type de fichier.
L'organisation des fichiers dans une machine est exactement celle qui consisterait à avoir des armoires contenant des cases, contenant des tiroirs, contenant des rayons etc. Dans chacun des rayons il y a des dossiers qui peuvent représenter différentes choses, chaque type de dossier se différencie des autres, par exemple par la couleur.
Je repose donc ma question :
Quel est l'élément logique qui relie les fichiers à examiner ?
euh..leur type leur est caractéristique , je pensais me baser sur ce critère pour les différencier de tous les autres fichiers car je ne vois pas comment faire autrement.
NB: quand j'écrivais "fichiers.txt", cela voulait dire les fichiers du type ".txt"
je viens de voir que dans mon exo, a la question suivante, une fonction compte le nombre de chacune des lettres dans une liste de fichiers et cette fonction prend en argument :
def fonction(liste_fichiers):
....
....
mais j'avoue que je ne suis pas beaucoup plus avancé.
On n'en est pas encore à "comment faire", mais seulement à "ce que l'on veut faire".
Donc traduit en français, c'est "étudier tous les fichiers de suffixe TXT", on peut supposer majuscule ou minuscule.
Y'en a tout de même beaucoup dans votre machine.
PS, si vous voulez que je vous aide, essayer de suivre la logique que je vous montre.
Dernière modification par Dlzlogic ; 31/03/2013 à 15h33.