2013-04-02 131 views
1

我正在研究一個簡單的python遊戲,玩家試圖猜測包含在單詞中的字母。問題在於,當我打印一個單詞時,它會在最後打印\ 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

權。 Python中的字符串不是列表 - 你必須在兩者之間進行轉換(儘管它們通常表現相似)。

如果您想轉字符串列表轉換爲字符串,你可以加入對空字符串:

x = ''.join(list_of_strings) 

x現在是一個字符串。你必須做類似的事情,從你得到的random.sample(一個列表)中得到一個字符串。

+0

真棒,謝謝 – jamyn

0

print增加一個換行符。您需要使用一些較低級別的,像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)