为什么我会得到一个额外的“*&引用;在我的python应用程序的某些行上?

为什么我会得到一个额外的“*&引用;在我的python应用程序的某些行上?,python,Python,我被要求使用A级计算来创建一个基于文本的刽子手游戏。出于某种原因,当显示“猜词”时,它在结尾处包含一个无法解决的附加字符,因此使游戏无法获胜。这种情况只发生在少数情况下,列表中的每个单词都没有这个附加字符 以下是python代码: import random class Hangman(): def Playing(self): category = raw_input("Please select a category from; EuroCapitals; PremTeams;

我被要求使用A级计算来创建一个基于文本的刽子手游戏。出于某种原因,当显示“猜词”时,它在结尾处包含一个无法解决的附加字符,因此使游戏无法获胜。这种情况只发生在少数情况下,列表中的每个单词都没有这个附加字符

以下是python代码:

import random

class Hangman():

def Playing(self):

    category = raw_input("Please select a category from; EuroCapitals; PremTeams; FruitAndVeg")
    again = True
    while again:

        guessword = open(category + ".txt", "r").readlines()[random.randint(0,9)]
        board = "*" * (len(guessword) - 1)
        alreadySaid = set()
        mistakes = 7

        print(" ".join(board))

        guessed = False
        while not guessed and mistakes > 0:

            whatplayersaid = raw_input("Guess a letter: ")

            if whatplayersaid in guessword:
                alreadySaid.add(whatplayersaid)
                board = "".join([char if char in alreadySaid else "*" for char in guessword])
                if board == guessword:
                    guessed = True
            else:
                mistakes -= 1
                print("Nope.", mistakes, "mistakes left.")

            print(" ".join(board))

        again = (input("Again [y/n]: ").lower() == 'y')


Hangman().Playing()
“EuroCapitals.txt”中的单词列表如下:

london
paris
madrid
berlin
moscow
rome
amsterdam
bern
zagreb
stockholm

非常感谢您的帮助。

很可能是文件中的
\n
字符(或者一些额外的空格?)-
readlines()
将保留它们(如果它们在文件中)。因此,您需要
.rstrip()
您的
猜测词,例如:

    guessword = open(category + ".txt", "r").readlines()[random.randint(0,9)].rstrip()
另外,像这样创建一个匿名文件对象通常不是一个好主意,因为它不会立即关闭。最好使用
with
语句:

    with open(category + ".txt", "r") as f:
        guessword = f.readlines()[random.randint(0,9)].rstrip()
您可以使用

    with open(category + ".txt", "r") as f:
        guessword = random.choice(f.readlines()).rstrip()