1

我正在开发一个简单的 python 游戏,玩家试图猜测单词中包含的字母。问题是,当我打印一个单词时,它会在末尾打印 \n 。

看来我需要使用 .strip 来删除它。但是,当我按照以下代码中所示使用它时,我收到一个属性错误,指出列表对象没有属性“strip”。

对不起新手问题。

import random
with open('wordlist.txt') as wordList:
    secretWord = random.sample(wordList.readlines(), 1).strip()

print (secretWord)
4

4 回答 4

1

好吧,那是因为列表没有名为 的属性strip。如果您尝试print secretWord,您会注意到它是list(长度为 1),而不是string. 您需要访问该列表中包含的字符串,而不是列表本身。

secretWord = random.sample(wordList.readlines(), 1)[0].strip()

当然,如果你使用choice而不是,这会更容易/更干净sample,因为你只抓住一个词:

secretWord = random.choice(wordList.readlines()).strip()
于 2013-04-02T21:47:17.923 回答
0

正确的。Python 中的字符串不是列表——您必须在两者之间进行转换(尽管它们的行为通常相似)。

如果您想将字符串列表转换为字符串,可以加入空字符串:

x = ''.join(list_of_strings)

x现在是一个字符串。您必须执行类似的操作才能从random.sample(列表)中获得的内容变为字符串。

于 2013-04-02T21:47:27.673 回答
0

print 添加一个换行符。您需要使用较低级别的东西,例如os.write

于 2013-04-02T21:47:37.413 回答
0

random.sample()将返回一个列表,看起来您正在尝试从列表中随机选择一个元素,因此您应该使用random.choice()

import random
with open('wordlist.txt') as wordList:
    secretWord = random.choice(wordList.readlines()).strip()

print (secretWord)
于 2013-04-02T21:48:58.223 回答