begin process at 2012 02 07 12:22:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Débutant(e)

 > 

Fichiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fichiers

jeudi 21 mai 2009 à 15:57:33 | Fichiers

Yofure

Bien le bonjour à tous.
Je suis débutant en programmation (et nouveau sur le forum ^^).

Je voudrais créer un programme qui teste toutes les permutations possibles entre des lettres données et qui en tire les mots existants dans la langue française, ou au moins qui teste jusqu'à en tirer au moins un mot français.

Ainsi, j'avais l'idée de mettre chaque lettre dans une série de variables 1, de donner un nombre aléatoire à une autre série variables 2, de ranger les variables deux dans l'ordre croissant, de faire aller de paire la variable 2a avec la variable 1a, etc, pour obtenir un mot. Ensuite le mot serait testé, pour voir s'il n'existe pas déjà dans une liste des mots créés auparavant, si il a déjà été "fabriqué", on recommence l'opération, et s'il ne l'a pas encore été, on l'ajoute à la liste des mots créés et on essaie de voir s'il existe dans une liste de mots français existants.
Pour obtenir cette liste de mots existants, j'ai téléchargé une liste de 22xxx mots (me semble-t-il) au format .txt, liste que j'avais vue conseillée dans un code posté sur ce site, pour un jeu du pendu. Seulement voilà, je n'ai encore jamais utilisé de fichiers, j'ai regardé un peu dans mon "cours" (celui de G. Swinnen)... Mais je ne sais pas comment faire pour apporter les 22000 mots à tester dans le programme sans le faire buguer... De même, le nombre de permutations possibles entre les lettres est plutôt très grand, la liste des mots déjà créés grossit vite et en arrive très vite à faire buguer le programme.

Ainsi, je me présente sur ce forum pour obtenir les conseils de personnes plus expérimentées que moi qui pourront (je l'espère) m'aider. Je vous pose donc les deux questions qui suivent :
- Poursuivant le but que je poursuis, ma méthode est-elle vraiment bonne et réalisable, ou voyiez vous un moyen plus ingénieux ?
- Pourriez vous m'éclairer sur la façon dont je peux apporter mes 22xxx mots dans mon programme , puisque lorsque j'utilise la fonction readlines(), ça a vite fait de buguer ?

Merci d'avance. :)
dimanche 31 mai 2009 à 16:44:35 | Re : Fichiers

gaulthier

Pour la permutation, je n'ai pas tout a fait compris la méthode que tu utilises !

Pour la recherche dans le fichier, fait la a la fin des permutations en faisant un truc du genre:


lst_mot_ok = []
fichier = open(nom_du_fichier, 'r')
for mot in fichier:
    if mot in lst_permutation:
        lst_mot_ok.append(mot)

je ne sais pas si cette méthode sera rapide mais elle sera toujours mieux que readlines()
mercredi 3 juin 2009 à 20:01:32 | Re : Fichiers

Yofure

Re-bien le bonjour à tous. N'ayant pas été forcément très clair dans l'explication de la méthode que j'envisageais, je n'ai pas été forcément compris. Cependant, j'ai pu trouver réponses à mes questions, et mettre debout un programme que voici (plus ou moins commenté) : # Importation de modules de fonctions et de fonctions : import os # Fonctions de communication avec le système d'exploitation import random # Fonction de création d'un nombre aléatoire # Définition des variables, listes, etc... nécessaires : liMotsCrees = [] # Indication du répertoire courant (pour l'ouverture de la liste de mots) rep_cour = os.getcwd() print "Le répertoire courant est :", rep_cour # Ouverture de la liste de mots dans une variable obFichier = open('listeFrancais.txt','r') listeFrancais = obFichier.read() obFichier.close() # Entrée des lettres par l'utilisateur : l1 = raw_input('Entrez la première lettre : ') l2 = raw_input('Entrez la deuxième lettre : ') l3 = raw_input('Entrez la troisième lettre : ') l4 = raw_input('Entrez la quatrième lettre : ') l5 = raw_input('Entrez la cinquième lettre : ') l6 = raw_input('Entrez la sixième lettre : ') l7 = raw_input('Entrez la septième lettre : ') l8 = raw_input('Entrez la huitième lettre : ') # Boucle principale : while len(liMotsCrees) <= 20160 : # Se fait autant de fois que le nombre combinaisons possibles nbL1 = random.randint(1, 100) nbL2 = random.randint(1, 100) nbL3 = random.randint(1, 100) nbL4 = random.randint(1, 100) nbL5 = random.randint(1, 100) # Génération de chiffres aléatoires nbL6 = random.randint(1, 100) nbL7 = random.randint(1, 100) nbL8 = random.randint(1, 100) #Définition des compteurs et chaînes de lettres nécessaires à la boucle : compteur1 = 0 compteur2 = 0 motCree = '' motTeste = '' while compteur1 <= (100) : # Création des combinaisons if nbL1 == compteur1 : motCree += l1 if nbL2 == compteur1 : motCree += l2 if nbL3 == compteur1 : motCree += l3 if nbL4 == compteur1 : motCree += l4 if nbL5 == compteur1 : motCree += l5 if nbL6 == compteur1 : motCree += l6 if nbL7 == compteur1 : motCree += l7 if nbL8 == compteur1 : motCree += l8 compteur1 += 1 if motCree not in liMotsCrees : # Ajout de la combinaison à la liste des combinaisons déjà faites liMotsCrees.append(motCree) while compteur2 < len(listeFrancais) : if listeFrancais[compteur2] != """ """: motTeste += listeFrancais[compteur2] compteur2 += 1 elif listeFrancais[compteur2] == 'a' : listeFrancais[compteur2] = 'A' elif listeFrancais[compteur2] == 'b' : listeFrancais[compteur2] = 'B' elif listeFrancais[compteur2] == 'c' : listeFrancais[compteur2] = 'C' elif listeFrancais[compteur2] == 'd' : listeFrancais[compteur2] = 'D' elif listeFrancais[compteur2] == 'e' : listeFrancais[compteur2] = 'E' elif listeFrancais[compteur2] == 'f' : listeFrancais[compteur2] = 'F' elif listeFrancais[compteur2] == 'g' : listeFrancais[compteur2] = 'G' elif listeFrancais[compteur2] == 'h' : listeFrancais[compteur2] = 'H' elif listeFrancais[compteur2] == 'i' : listeFrancais[compteur2] = 'I' elif listeFrancais[compteur2] == 'j' : listeFrancais[compteur2] = 'J' elif listeFrancais[compteur2] == 'k' : listeFrancais[compteur2] = 'K' elif listeFrancais[compteur2] == 'l' : listeFrancais[compteur2] = 'L' elif listeFrancais[compteur2] == 'm' : listeFrancais[compteur2] = 'M' elif listeFrancais[compteur2] == 'n' : listeFrancais[compteur2] = 'N' elif listeFrancais[compteur2] == 'o' : listeFrancais[compteur2] = 'O' elif listeFrancais[compteur2] == 'p' : listeFrancais[compteur2] = 'P' elif listeFrancais[compteur2] == 'q' : listeFrancais[compteur2] = 'Q' elif listeFrancais[compteur2] == 'r' : listeFrancais[compteur2] = 'R' elif listeFrancais[compteur2] == 's' : listeFrancais[compteur2] = 'S' elif listeFrancais[compteur2] == 't' : listeFrancais[compteur2] = 'T' elif listeFrancais[compteur2] == 'u' : listeFrancais[compteur2] = 'U' elif listeFrancais[compteur2] == 'v' : listeFrancais[compteur2] = 'V' elif listeFrancais[compteur2] == 'w' : listeFrancais[compteur2] = 'W' elif listeFrancais[compteur2] == 'x' : listeFrancais[compteur2] = 'X' elif listeFrancais[compteur2] == 'y' : listeFrancais[compteur2] = 'Y' elif listeFrancais[compteur2] == 'z' : listeFrancais[compteur2] = 'Z' elif listeFrancais[compteur2] == """ """: compteur2 += 1 if motCree == motTeste : print motTeste Walà... Cepdant, ma méthode est horriblement loin d'être géniale, primo parceque je ne suis pas du tout sûr que le mot recherché soit dans ma liste de mots importée, et surtout secondo parceque ma boucle de 20160 mots fait planter la chose... Si quelqu'un a une idée plus ingénieuse, donc... Merci =)


Cette discussion est classée dans : programme, liste, fichiers, mots, existants


Répondre à ce message

Sujets en rapport avec ce message

Liste des applications Windows [ par aera group ] Bonjour,Je cherche à savoir s'il excise un sous programme de Windows qui renvoi la liste des applications ouvertes actuellement. Par exemple, si j'ai lister les fichiers d'un dossier [ par killroy988 ] Bonjour, je vous écris car je suis débutant en Python et j'aimerais réaliser un petit programme pour m'entrainer à la base et aux fichiers...J'ai malh Parcourir sa BDR [ par skools ] Bonjour à tousVoilà: je suis loin d'être un pro en programmation, et encore moins en manipulations diverses sur la base de registre, et pourtant, je c Débutant [ par Ombitious_Developper ] Salut Tous :J'ai la curiosité de connaître le langage Python. J'ai quelques questions :1. Est ce que Python est interprété ou compilé?2. Quels outils uploader un fichier [ par amina22 ] bonjour,je suis entrain de programmer une application  qui se resume a une interface  qui me permet d'uploader des fichiers(audio,vidéo,image...) et d script pour désinstaller/installer programme [ par Roro8883 ] Bonjour à tous !Est-il possible de créer un script (en pyhton, ou autre langage) qui permette de désinstaller un programme ? et d'en installer un ?En appel de methode entre 2 fichiers [ par areuh ] Bonsoir,Voilà, j'ai 2 fichiers .py représentant chacun une classe- le 1° est la gui (interface graphique avec Frame, Button, etc)- le 2° est un objet Définir une liste de string [ par Mr.X ] Mon problème est que dans ma classe une fonction execute une instruction du type : self.lst[i] = bufferet python me renvoi que self.lst n'est pas défi Liste des applications ouvertes ? [ par budhax ] Sous MS Windows, comment obtenir (dans la console de sortie) la liste des applications ouvertes (celles ayant un bouton dans la barre des taches).Une Liste le contenu d'un répertoire [ par MHI ] Le code suivant me génére un fichier vide, alors que mon répertoire contient bien un répertoire et 3 fichiers :import osimport dircachefic = open('Lis


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales