J'ai ajouté un fichier ouvert à mon code de travail précédemment et que cela ne fait pas ce qui est censé.
J'ai testé et couru pour boucle sur un fichier ouvert pour voir si tout fonctionne et que tout cela fonctionne. Il m'a imprimé une liste unique de tous les mots à l'intérieur du fichier TXT. P>
Mon attente est de vérifier si le mot est dans les mots_list et continuez, mais maintenant, ce qui se passe, il sera toujours imprimé (le mot est pas dans la liste), même si je tape le mot qui est en effet dans la liste. p>
5 Réponses :
with open("generated one column words.txt", "r") as f:
words_list = f.read()
def main():
used_words = []
while True:
word = input("Type 4 letter word: ")
if not word.isalpha():
print("Only letters are allowed!")
elif word not in words_list:
print("word is not in the list")
elif len(word) == 4 and word not in used_words:
used_words.append(word)
print("good job, try another word")
elif word in used_words:
print("word already exists")
elif len(word) != 4:
print("word is not 4 letters long")
game = main()
Vous pouvez utiliser F.Readlines () code> à la place. Ensuite, vous devez seulement vous débarrasser des caractèresWLINE. P>
Cette ligne doit être p> mots_list est une liste avec seulement 1 élément à la position [0]. Vous devez spécifier le [0] p> p>
def main():
# opening the file with one word per each line
with open('generated one column words.txt', 'r') as f:
# reading each lines without newline at the end
words_list = [line.strip() for line in f.readlines()]
# caching 4-letter word after submit
used_words = list()
while True:
word = input('Type 4 letter word: ')
if word.isalpha():
if word in words_list:
if len(word) is 4:
if word not in used_words:
used_words.append(word)
print('good job, try another word')
else: # if word already added in used_words
print('word already exists')
else: # if length of word != 4
print('word is not 4 letters long')
else: # if word not in words_list
print('word is not in the list')
else: # if word contains special characters or digits
print('Only letters are allowed!')
if __name__ == "__main__":
main() # infinite run the function main()
Puisque vous utilisez Votre code actuel le lira comme ou vous pouvez modifier votre propre code comme suit - P> f.fin () code>, il lit le fichier entier en tant que chaîne unique avec chaque ligne séparée par \ n code> caractère qui est pourquoi votre requête retourne faux à chaque fois. Si votre fichier .txt code> contient des mots- 'this \ NTHAT \ NTLERE' code> et words_list avoir cette chaîne unique qui ressemblera à - ['this \ n \ nthat \ nnear \ nhome'] code>. Modifiez votre code pour lire le fichier comme suit et il fonctionnera: p> words_list = []
with open("generated one column words.txt", "r") as f:
reader = f.read()
words_list.extend(reader.split('\n'))
Merci beaucoup! Votre première option a travaillé comme un charme et est maintenant enregistrée dans mes notes et dans mon cerveau! Et merci à tout le monde pour leur temps de m'aider!
mots_list code> n'est pas une liste de mots. C'est une liste avec un seul élément, qui est l'ensemble du contenu du fichier.F.Read () Code> vous donnera tout le contenu du fichier en tant que chaîne unique. Donc, votremots_list code> n'a qu'un seul élément, etword dans words_list code> ne sera vrai que si vous correspondez au texte de l'ensemble du fichier. Vous voulez probablement utiliserstr.split code> < / a> suivi delist.extend code >, ou peut-être justepour la ligne dans Fichier: APPEND (ligne) CODE> Si vous n'avez toujours qu'un mot par ligne.Dupliqué possible de Comment lire une ligne de fichier- par ligne dans une liste?