Écrire une fonctionwc(nomFichier) qui ouvre le fichier en question et renvoie un tuple de trois nombres :
le nombre de caractères (y compris les caractères de retour à la ligne)
le nombre de mots
le nombre de lignes
CONSIGNE
Nous définissons ici un mot comme étant une chaîne de caractères alphanumériques, c’est-à-dire répondant True à la méthode isalnum(), et maximale, c’est-à-dire entourée d’espaces ou de séparateurs ou de caractères de fin de phrase.
Les fichiers utilisés par UpyLaB pour tester la fonction sont accessibles aux adresses suivantes :
Pour information, le premier fichier contient les caractères a2x!§t5\n (\n désignant le caractère de fin de ligne). L’appel de la fonction sur ce fichier retourne donc le tuple (8,2,1), les deux mots étant a2x et t5.
Notez que le fichier le-petit-prince.txt est libre de droit d’auteur sauf en France (voir https://fr.wikipedia.org/wiki/Le_Petit_Prince). Si vous habitez en France, vous ne pouvez donc légalement le télécharger, mais aucun souci ailleurs dans le monde.
Vous pourriez être tenté d’utiliser la méthode split. Ce n’est peut-être pas une très bonne idée, car la liste des séparateurs est ici très longue. Par exemple, le fichier pourrait contenir la chaîne
def wc(nomFichier):
with open("/pub/data/wc1.txt",'r') as file: # pour la lecture il faut ouvrir en mode "r" (valeur par défaut)
contenu = file.read() # ça donne un string
longueur = len(contenu) # la longueur
nb_mots = ? # à toi de compléter
nb_lignes = ? # à toi de compléter
return longueur, nb_mot, nb_lignes # c'est comme ceci que l'on retourne un tuple
Mais honnêtement tu nous aurais présenté ça, déjà ça montre que tu as fait quelques recherches, puisque tu as trouvé comment ouvrir un fichier.
Après si tu bloques sur un truc particulier, on peut guider, par exemple sur le comptage des mots qui me semble être le truc le plus dur à faire dans cet exercice.
EDIT : Le fait que tu aie posté plein de sujets en nous balançant juste l'énoncé des exercices joue beaucoup dans ma remarque, hier j'en ai vu 4 postés par toi, ça sent juste le mec qui veut qu'on fasse ses devoirs à sa place.
- Edité par LoupSolitaire 27 novembre 2019 à 17:13:59
Bonsoir désoler pour le retard ça peut pas être ça car il me demande de lire 3 fichier et comment peut-je avoir le nombre de mots ? regarder les txt ci-dessous
Nous définissons ici un mot comme étant une chaîne de caractères alphanumériques, c’est-à-dire répondant True à la méthode isalnum(), et maximale, c’est-à-dire entourée d’espaces ou de séparateurs ou de caractères de fin de phrase.
Les fichiers utilisés par UpyLaB pour tester la fonction sont accessibles aux adresses suivantes :
Pour information, le premier fichier contient les caractères a2x!§t5\n (\n désignant le caractère de fin de ligne). L’appel de la fonction sur ce fichier retourne donc le tuple (8,2,1), les deux mots étant a2x et t5.
Si j'ai bien compris l'énoncé, le programme (la fonction) ne dois lire qu'un seul fichier, les trois sont donnés pour tester le programme sur différents jeux de données.
- Edité par LoupSolitaire 27 novembre 2019 à 18:42:19
def wc(nomFichier):
with open("/pub/data/wc1.txt",'r') as file: # pour la lecture il faut ouvrir en mode "r" (valeur par défaut)
contenu = file.read() # ça donne un string
longueur = len(contenu) # la longueur
nb_mots = True # à toi de compléter
nb_lignes = 1 # à toi de compléter
return longueur, nb_mots, nb_lignes # c'est comme ceci que l'on retourne un tuple
- Edité par PradaSmith 28 novembre 2019 à 16:22:14
J'ai juste écrit le code dans un fichier, j'ai téléchargé le fichier wc1.txt et je l'ai mis dans le même dossier, et j'ai lancé le programme dans une console (la première ligne c'est la commande que j'ai lancé, ça fait pas partie du résultat affiché par le programme.
C'est pas étonnant que tu ait du mal à apprendre si tu peux pas tester correctement ton code.
Selon ton système tu as juste besoin d'un éditeur de texte adapté à la programmation (un truc simple comme notepad++ fera l'affaire, tu peux aussi coder avec l'éditeur de texte de IDLE qui doit être fourni avec Python).
non je sais utiliser IDLE ... j'ai regarder la video mais je sais déjà tout ça mais moi le problème je pense que c le code parceque quand je fait entrer IDLE passe a la ligne laisse une ligne vide et je suis obliger de re appuiyer entrer mais après ça n'affiche rien
non je sais utiliser IDLE ... j'ai regarder la video mais je sais déjà tout ça mais moi le problème je pense que c le code parceque quand je fait entrer IDLE passe a la ligne laisse une ligne vide et je suis obliger de re appuiyer entrer mais après ça n'affiche rien
Faudrait une capture d'écran pour qu'on sache ce que tu as tapé et pourquoi ça n'affiche rien.
tu peut juste m'aider a finir ? le programme on y es presque mais j'aimerais savoirs comment fr pour refaire la mm manipulation avec les deux autres texte ?
Autant pour moi, il fallait utiliser le paramètre ...
def wc(nomFichier):
with open(nomFichier, mode="r") as file: # pour la lecture il faut ouvrir en mode "r" (valeur par défaut)
contenu = file.read() # ça donne un string
longueur = len(contenu) # la longueur
nb_mots = ? # à toi de compléter
nb_lignes = ? # à toi de compléter
return longueur, nb_mots, nb_lignes # c'est comme ceci que l'on retourne un tuple
par contre pour nb_mots et nb_lignes il faut que tu trouve un petit algo ...
- Edité par thelinekioubeur 28 novembre 2019 à 19:39:03
j'aimerais savoirs comment fr pour refaire la mm manipulation avec les deux autres texte ?
Dans la consigne il faut écrire une fonction qui traite un fichier, pour en traiter plusieurs il suffit d'appeler la fonction avec le nom d'un autre fichier, le reste ne change pas.
Mais j'ai pas l'impression qu'on te demande d'écrire un programme complet pour traiter les trois fichiers, juste une fonction capable de traiter un fichier.
Mais le problème que j'ai c'est que ça renvoie une reponse vraie en fonction de nb mots et lignes écrits j'ai donc essayer plusieur truc genre input() et intinput et tt mais ça ne marche pas de façon général ? que doit je faire
sachant que nb mots et lignes doit renvoyer c'est trois resultat
le petit prince (82650, 15317, 1550)
Zola.txt') : (1356, 219, 1)
wc1.txt') : (8, 2, 1)
prec, nb_mots = ' ', 0
for char in contenu:
nb_mots += int(prec == ' ' and char != ' ')
prec = char
return nb_mots
Attends, c'est toi qui a écrit ce bout de code ?
Parce que si oui, j'arrive pas à comprendre que tu puisses sortir un hack qui profite du fait qu'en Python, les booléens True et False valent respectivement 1 et 0 quand ils sont convertis en int alors qu'à côté de ça tu as du mal avec des concepts moins avancés au point de faire appel à des variables qui n'existent pas dans ton code ?
C'est un coup de bol où tu copie des bouts de code que tu comprends pas et tu essaie de les combiner ensemble ?
Parce si c'est le deuxième cas, arrête tout de suite, tu ne vas jamais progresser si tu essaie de combiner des trucs au hasard sans comprendre ce que tu fais.
EDIT : En fait je suis convaincu que c'est de la copie de bouts de code trouvés ailleurs, ligne 12 on voit un fd.readline().
fd pour File Descriptor, une abbréviation souvent utilisée par les programmeurs expérimentés, mais jamais par les débutants, encore moins les débutants francophones.
Donc je réitère : arrête tout de suite, tu n'arriveras à rien en collant ensemble des bouts de code que tu ne comprends pas.
Reprends ton cours (au moins une relecture rapide), les bases, les variables, les conditions, les boucles, les fonctions, fais un ou deux exercices rapides pour voir si tu arrives à mettre en oeuvre ces concepts, et ça devrait déjà pas mal t'aider.
En programmation copier le code des autres ne te sauvera pas, si tu comprend pas ce que tu fais ça saute aux yeux, et ça donne un code de merde et qui marche pas.
- Edité par LoupSolitaire 29 novembre 2019 à 15:41:02
En programmation copier le code des autres ne te sauvera pas, si tu comprend pas ce que tu fais ça saute aux yeux, et ça donne un code de merde et qui marche pas.
hého arrête de critiquer mon travaux parceque jte jure j'essaye de comprendre se que vous me ditent mais vous parler chinois '^^ je comprend a moitié se que vous me dite, j'ai passer 2h sur le sujet j'ai publier récemment ,et j'étais obliger clos car a chaque fois que tu me donner un indice bah ça compliquer ma compréhension . lol
hého arrête de critiquer mon travaux parceque jte jure j'essaye de comprendre se que vous me ditent mais vous parler chinois '^^ je comprend a moitié se que vous me dite, j'ai passer 2h sur le sujet j'ai publier récemment ,et j'étais obliger clos car a chaque fois que tu me donner un indice bah ça compliquer ma compréhension . lol
On sent bien que tu essaie, pas de soucis là-dessus.
Le truc c'est qu'au début on ne connaissait pas ton niveau, donc on donnait sans doute des conseils que tu ne pouvais pas comprendre ou qui t'on embrouillés.
Mais au fur et à mesure des discussions on découvre qu'il te manque des prérequis très basiques, et que tant que tu les auras pas, tu pourras pas avancer sur le reste.
C'est pas pour te faire chier, au contraire, tu peux continuer à t'épuiser sur des exercices trop durs pour toi, ou alors tu peux reprendre les bases qui te manquent (les notions de variables et leurs type, les fonctions et leurs paramètres et valeurs de retour, etc...).
Si le cours que t'as donné ton prof ne te convient pas, tu peux en essayer un autre, il y en existe plein :
Au passage, tu n'es pas toujours facile à comprendre quand tu t'exprimes en français, je sais pas si c'est ta langue maternelle ou si tu as des problèmes type dyslexie, mais si tu peux te relire, ça aide parce que parfois il manque carrément des mots.
- Edité par LoupSolitaire 29 novembre 2019 à 18:08:30
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...