TP python scrabble
batghewy
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un Tp sur python à faire, j'ai réussi toutes les questions sauf erreur de ma part, il me manque juste la dernière question où je suis bloqué depuis un moment. La dernière question porte sur le scrabble, je vous met mon programme et le sujet en pièce jointe, si quelqu'un peut m'aider, ça serait cool.


j'ai un Tp sur python à faire, j'ai réussi toutes les questions sauf erreur de ma part, il me manque juste la dernière question où je suis bloqué depuis un moment. La dernière question porte sur le scrabble, je vous met mon programme et le sujet en pièce jointe, si quelqu'un peut m'aider, ça serait cool.
# -*- coding: utf-8 -*- """ Created on Thu Oct 14 12:50:05 2021 @author: Utilisateur """ def dictionnaire(fichier): """ renvoie la liste de tous les mots contenus dans le fichier dont le nom est passé en argument argument : fichier, de type chaine de caractères. C'est le nom du fichier compressé contenant le dictionnaire résultat : de type liste de chaines de caractères. Chaque élément de la liste correspond à une ligne du fichier""" import zipfile import sys f = zipfile.ZipFile(fichier, 'r') l = f.namelist() if len(l) != 1: print("*** L'archive devrait contenir exactement 1 fichier mais en contient {}".format(len(l))) sys.exit(1) r = f.read(l[0]).decode(encoding="UTF-8", errors="strict").split("\n") return [m for m in r if len(m) != 0] # Question 1 # len(littre) renvoi 73192, donc il y a 73192 mots dans le dictionnaire littre.zip # len(dicoConjug) renvoi 336531, donc il y a 336531 mots dans le dictionnaire dicoConjug.zip # pour obtenir c'est valeur, on rentre dans la console len(littre) et len(dicoConjug) après avoir rentré dans la console littre = dictionnaire("littre.zip") et littre = dictionnaire("littre.zip") littre = dictionnaire("littre.zip") dicoConjug = dictionnaire("dicoConjug.zip") # Question 2 def mots_de_n_lettres(dico,n): return [m for m in dico if len(m)==n] """TEST OK mots_de_n_lettres(littre,22) Out[12]: ['cristallographiquement', 'disproportionnellement'] len(mots_de_n_lettres(dicoConjug,10)) Out[13]: 51402""" # 51402 mots de 10 lettres dans dicoConjug et 2 mot de 22 lettres dans le littre. #question 3 def mot_commence_par(mot,prefixe): b=len(prefixe) if prefixe[0:b]==mot[0:b]: return True else : return False """TEST OK mot_commence_par("temoignage","te") Out[14]: True mot_commence_par("chouette", "choux") Out[15]: False mot_commence_par("chouette", "clou") Out[16]: False mot_commence_par("chou", "chouette") Out[17]: False mot_commence_par("chouette", "chou") Out[18]: True""" #question 4 def liste_mots_commencant_par(dico,prefixe): return [m for m in dico if mot_commence_par(m,prefixe)] """TEST OK liste_mots_commencant_par(littre,'chou') Out[19]: ['chou', 'chouan', 'chouanisme', 'chouanner', 'chouannerie', 'chouart', 'chouc', 'choucas', 'chouchement', 'chouchette', 'choucroute', 'choudet', 'choue', 'chouette', 'chouler', 'chouquet', 'chouquette'] len(liste_mots_commencant_par(littre,'chou')) Out[20]: 17""" #17 mots commencant par chou dans le littre #question 5 def envers (mot) : res="" for lettre in mot: res=lettre+res return res def mot_termine_par(mot,suffixe): a=envers(mot) b=len(suffixe) c=envers(suffixe) if c[0:b]==a[0:b]: return True else: return False def liste_mots_terminant_par(dico,suffixe): return [m for m in dico if mot_termine_par(m,suffixe)] """ fonction envers qui renvoi l'inverse d'un mot que je réutilise dans ma deuxième fonction. TEST OK envers('chat') Out[24]: 'tahc' mot_termine_par('chat','at') Out[25]: True mot_termine_par('chat','ta') Out[26]: False mot_termine_par('chaleureux','cha') Out[27]: False liste_mots_terminant_par(littre,'chou') Out[28]: ['bachou', 'cachou', 'chabichou', 'chou']""" #question 6 def mots_debut_fin_n(dico,prefixe,suffixe,n): a=mots_de_n_lettres(dico,n) b=liste_mots_commencant_par(a,prefixe) c=liste_mots_terminant_par(b,suffixe) return c """ TEST OK mots_debut_fin_n(dicoConjug,'cas','ns',12) Out[29]: ['cascaderions', 'caséfierions', 'casematerons', 'casernerions', 'casquassions', 'castagnerons', 'castrassions'] len(mots_debut_fin_n(dicoConjug,'cas','ns',12)) Out[30]: 7""" #7 mots commençant par "cas", se terminant par "ns" et comportant 12 lettres dans le dictionnaire avec conjugaisons #question 7 def mot_correspond(mot, motif): if len(mot)!=len(motif): return False else : res=0 for i in range (0,len(mot)): if mot[i]==motif[i] or motif[i]==".": res=res+1 if res==len(mot): return True else : return False """TEST OK mot_correspond("tarte", "t..t.") Out[31]: True mot_correspond("tarte", "t..") Out[32]: False mot_correspond("cheval", "c..v..l") Out[33]: False mot_correspond("cheval", "c..v.l") Out[34]: True mot_correspond("cheval", "c..v.r") Out[35]: False mot_correspond("cheval", "c..o.l") Out[36]: False""" #question 8 def liste_mots_motif(dico,motif): return [m for m in dico if mot_correspond(m, motif)] """TEST OK liste_mots_motif(dicoConjug,'p..h.s') Out[37]: ['pachas', 'pathos', 'péchas', 'pêchas', 'péchés', 'pèches', 'pêches', 'pêchés', 'pochas', 'poches', 'pochés', 'puches'] len(liste_mots_motif(dicoConjug,'p..h.s')) Out[38]: 12""" # 12 mots correspondant au motif "p..h.s" dans le dictionnaire avec conjugaisons. #question 9 (Bonus) def mot_correspond2(mot,motif): if len(mot)!=len(motif): return False else : tab=['à','ä','â','ç','ê','è','é','ë','î','ï','ô','ö','ù','ü','û'] res=0 for i in range (0,len(mot)): if mot[i]==motif[i] or motif[i]=='.' or mot[i] in tab: res=res+1 if res==len(mot): return True else: return False """TEST OK mot_correspond2("pêches", ".ech..") Out[41]: True mot_correspond2("bâteau", ".a.e.u") Out[42]: True mot_correspond2('pêche','p..c..') Out[43]: False""" #question 10 def apparait(lettre,mot): res=0 for i in range (0,len(mot)): if mot[i]==lettre: res=res+1 if res>0: return True else: return False """TEST OK apparait('l','lapin') Out[44]: True apparait('o','lapin') Out[45]: False """ def mot_possible(mot,lettres): result=True for a in mot: if not(a in lettres): result=False return result #pas la peine d'utilisé apparaît, ca rallonge le programme """TEST OK mot_possible("lapin", "abilnpq") Out[48]: True mot_possible("cheval", "abilnpq") Out[49]: False mot_possible("chapeau", "abcehpuv") Out[50]: True mot_possible('transcendantalement','abondance') Out[27]: False""" #question 11 def mot_optimal(dico, lettres): mot="" for m in dico: if mot_possible(m,lettres) and len(m)>len(mot): mot=m return mot '''TEST OK mot_optimal(littre, 'abondance') Out[30]: 'abondance' mot_optimal(littre, 'abcddefghijklmnopqrstuvwxyz') Out[31]: 'inconstitutionnellement' ''' #question 12 def apparait2(lettre,mot): res=0 for i in range (0,len(mot)): if mot[i]==lettre: res=res+1 return res # fonction comptant le nombre d'apparition de la lettre dans le mot '''TEST OK apparait2('a','chapeau') Out[34]: 2 apparait2('o','tobinambourou') Out[35]: 3 '''
A voir également:
- Littre scrabble
- Ordi scrabble - Télécharger - Jeux vidéo
- Débloquer scrabble go - Forum jeux en ligne
- Isc.ro scrabble - Forum jeux en ligne
- Scrabble isc ro ✓ - Forum Réseaux sociaux
- Pour scrabble go - Forum jeux en ligne
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
quel est le soucis avec ton programme?
as-tu une question?
quel est le soucis avec ton programme?
as-tu une question?
bonjour, le soucis est sur la dernière question de l'énoncé (questions 12), j'ai créer une fonction apparait deux qui retourne le nombre de fois qu'une lettre apparait dans un mot, cependant, je n'arrive pas a l'utiliser correctement dans la fonction mots_possible_scrabbel, je voudrais que la fonction return True si le mot est possible avec les lettres passées en paramètres (mais que lorsque l'on utilise une des lettres, on ne peut pas la réutiliser ) ou False