Проверка, были ли введены слова из текстового файла, не работает - PullRequest
0 голосов
/ 03 ноября 2019

Я написал программу, которая получает случайное слово из текстового файла, шифрует его и просит пользователя расшифровать его. Он проверяет, прав ли пользователь, сравнивая ответ со словами в текстовом файле, но это не работает. Любые идеи, почему?

lines = fo.readlines()

while playing:

        word = random.choice(lines) # picks a random word from the dictionary

        convertWord = list(word) # Converts it to a list

        random.shuffle(convertWord) # Shuffles the list

        print("Your word is: ",''.join(convertWord)) # joins the list into a string
        ans = str(input("Unscramble! "))


        for line in lines:
            if ans in lines: # checks if answer is in dictionary
                print("correct")
            else:
                print("incorrect")

Я ожидаю, что он скажет правильно или неправильно и вернется к началу, но вывод всегда неверен.

Ответы [ 3 ]

0 голосов
/ 03 ноября 2019

Это потому, что readlines возвращает список строк, где каждый элемент в списке заканчивается символом новой строки \n, но когда пользователь вводит слово, он не включает символ новой строки. Вы можете использовать rstrip() для удаления символа новой строки из каждой строки вашего словаря.

import random

dictionary = ["umbrella\n", "shelter\n", "hostile\n", "exchange\n", "maverick\n"]

lines = [line.rstrip() for line in dictionary]

word = random.choice(lines) # picks a random word from the dictionary

convertWord = list(word) # Converts it to a list

random.shuffle(convertWord) # Shuffles the list

print("Your word is: ",''.join(convertWord)) # joins the list into a string
ans = str(input("Unscramble! "))

for line in lines:
    if ans in lines: # checks if answer is in dictionary
        print("correct")
    else:
        print("incorrect")
0 голосов
/ 03 ноября 2019

Вам необходимо удалить символ новой строки в конце каждого слова, поскольку вы читаете их из файла. И, наконец, у вас все еще есть исходное слово, поэтому нет необходимости снова анализировать строки для него.

Вы можете внести следующие изменения:

word = random.choice(lines).strip()

...

if ans == word:
    print("correct")
else:
    print("incorrect")
0 голосов
/ 03 ноября 2019

Я думаю, что проблема заключается в конце в конце. Вы можете искать всю строку как слово. Может быть, вы можете поделиться жестко закодированным примером вашего вклада? (линии)

В любом случае, я немного изменил его, и он работает

import random
words = ["cat","dog","bird"]
word = random.choice(words) # picks a random word 

convertWord = list(word) # Converts it to a list

random.shuffle(convertWord) # Shuffles the list

print("Your word is: ",''.join(convertWord)) # joins the list into a string
ans = str(input("Unscramble! "))

if ans == word: # checks if answer is correct
  print("correct")
else:
  print("incorrect")

Теперь вам нужно выяснить, как вы хотите заполнить "слова":)

...