2013-04-02 5 views
1

Я работаю над простой игрой на питоне, в которой игрок пытается угадать буквы, содержащиеся в слове. Проблема в том, что когда я печатаю слово, оно печатает \ n в конце.ошибка атрибута python?

Похоже, мне нужно использовать .strip, чтобы удалить его. Однако, когда я использую его, как показано в следующем коде, я получаю ошибку атрибута, говоря, что объект списка не имеет атрибута «strip».

Извините за новый вопрос.

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

print (secretWord) 
+0

Видя, как вы [решили эту проблему] (http://stackoverflow.com/questions/15775920/letter-guessing-game-in-python), было бы неплохо, если бы вы приняли ответ, который помог вам. –

ответ

1

Ну, это потому, что списки не имеют атрибут с именем strip. Если вы попробуете print secretWord, вы заметите, что это list (длиной 1), а не string. Вам нужно получить доступ к строке, содержащейся в этом списке, а не к самому списку.

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

Конечно, это было бы намного проще/чище, если вы использовали choice вместо sample, так как вы только захватывая одно слово:

secretWord = random.choice(wordList.readlines()).strip() 
0

Right. Строки в Python не являются списками - вам нужно преобразовать их между двумя (хотя они часто ведут себя аналогично).

Если вы хотите, чтобы включить список строки в строку, вы можете присоединиться на пустую строку:

x = ''.join(list_of_strings) 

x теперь строка. Вам нужно будет сделать что-то похожее, чтобы получить от того, что вы выбрали из random.sample (список) в строку.

+0

awesome, thanks – jamyn

0

печать добавляет новую строку. Вы должны использовать что-то более низкий уровень, как os.write

+0

Это не проблема, с которой он сталкивается; он видит '' \ n'', потому что 'secretWord' - это список вместо строки. –

0

random.sample() возвращает список, это выглядит, как вы пытаетесь случайным образом выбрать один элемент из списка, так что вы должны использовать random.choice() вместо:

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

print (secretWord) 
Смежные вопросы