AttributeError: 'list' object has no attribute 'readline'

Signaler
-
Messages postés
419
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
20 octobre 2020
-
Bonjour, une erreur s'affiche dans mon programme pouvez-vous m'aidez svp ?
Elle se situe à la fonction def ListedesMots ils me dise " AttributeError: 'list' object has no attribute 'readline' "

from random import randint


file=[] # Variable tableau qui va contenir l'ensemble des mots possibles
MonMot='' # Le mot a trouver
NbErreur=0 # Innitialise le nombre d'erreur au départ
LettresErreur =''


def Listedesmots():
file = open('mots.txt', "r")
line = file.readline()
while line:
print(line)
line = file.readline()
file.close()


def decoupe_mot(lemot):
ma_liste=[]
#Déclaration d'une liste vide pour y stocker les valeurs découpées
for i in range(len(lemot)):
#Boucle de 0 jusqu'au nombre de caractère dans le mot
ma_liste.append([lemot[i],False])
#Ajoute à la fin de la liste une nouvelle liste contenant le caractère et
#un booléen False
return ma_liste


def affiche_mot (Maliste):
affichage = ''
#Declaration d'une variable Texte pour le retour de la fonction
for i in range (len(Maliste)):
#Boucle sur l'ensemble des éléments de la liste
if MaListe [i][1] == False:
#Si la deuxième valeur de la sous liste est égale à FAUX on ajoute un "_"
#sinon on met la lettre
affichage= affichage + "_"
else :
affichage = affichage + MaListe [i][0]

return affichage


def test_lettre(MaListe, MaLettre):
Astrouve=False
for i in range (len(MaListe)):
#Boucle sur l'ensemble des caractère de la liste
if MaListe[i][0]==MaLettre :
#Si le caractère de la liste est égal à la lettre reçu en param, alors on
#change la valeur du Boolean
MaListe[i][1]=True
Astrouve=True


return Astrouve

def Continu_Chercher(Maliste):
for i in range(len(Maliste)):
if Maliste[i][1]==False:
return True

return False

def AfficheLePendu (NbErreur):
if NbErreur == 1:
print(" _______\n\
| |\n\
| \n\
| \n\
| \n\
_|_")
elif NbErreur ==2:
print(" _______\n\
| |\n\
| o\n\
| |\n\
| \n\
_|_")
elif NbErreur ==3 :
print(" _______\n\
| |\n\
| o\n\
| (|\n\
| \n\
_|_")
elif NbErreur ==4 :
print(" _______\n\
| |\n\
| o\n\
| (|)\n\
| \n\
_|_")
elif NbErreur==5 :
print(" _______\n\
| |\n\
| o\n\
| (|)\n\
| /\n\
_|_")
elif NbErreur==6:
print(" _______\n\
| |\n\
| o\n\
| (|)\n\
| / \ \n\
_|_")



DefinitLesMots()
# Lance la fonction qui remplit la liste des mots possibles
MonMot=file[randint(0,3000)]
# Prend un mot au hasard dans la liste des 20 mots possibles

MaListe = decoupe_mot(MonMot)

print ("Vous devez deviner le mot avec 6 érreurs maximum")

while Continu_Chercher(MaListe) and NbErreur <6 :
Lalettre = input("Saisissez une lettre : ")
if not test_lettre(MaListe,Lalettre) :
NbErreur+=1
LettresErreur+=Lalettre
print ("Perdu")
else:
print ("Vous avez trouver une lettre")

AfficheLePendu(NbErreur)
print ("Votre mot : " + str(affiche_mot(MaListe)))
print ("Vos erreurs : " + str(LettresErreur))


print ("La bonne réponse etait : " + str(MonMot))

1 réponse

Messages postés
419
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
20 octobre 2020
210
Bonjour,
Pouvez-vous poster votre code en utilisant les balises de code pour que les indentations soient conservées ? https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code