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