2017-05-26 17 views
1

我正在做一個任務,我必須製作一個Hangman遊戲。我只是從頭開始使用我的基本知識。很多事情可能會以不同的方式更有效率,但我喜歡搞清楚我自己的解決方案。所以這是我的代碼。這個想法是我想從一個列表切換到另一個列表。但是,當我做的代碼的其餘部分失敗,它以前的工作。當我用另一個列表替換一個列表時,出現了一些問題

import random 
alphabet = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')     

allwords = []                    

with open('google-10000-english-usa-no-swears-long.txt') as inputfile: 
    for line in inputfile: 
     allwords.append(line.strip().split(',')) 
words = ['apple', 'banana', 'coconut']                 

word = random.choice(words)                 

guessesleft = 8                    
sentence1 = ('You have %d guesses!\n') % guessesleft           

length = len(word)           
uslist = ['_'] * length                  

hangword = list(word)     

問題如下:在代碼中,當前使用了「單詞」,這起作用。然而,現在,我不想使用'單詞'作爲單詞列表,而是使用textfile和'allwords'作爲單詞列表(所以我改變word = random.choice(words)in word = random.choice(allwords ),它從文件中選擇一個隨機單詞,但之後出錯了,每個單詞只對'_'產生,而不是1,對於隨機選擇的單詞中的每個字母。

+0

縮進你的代碼。它是Python,它沒有任何意義上的錯誤縮進。 – Mikael

+2

你想'allwords.extend(...',而不是'allwords.append(...'。因爲它是'allwords'不是一個單詞列表(就像'單詞'是),這是一個列表單詞列表 – jasonharper

+0

@Mikael,我不確定你的意思,除了空白行(我真的不知道爲什麼他們在那裏),這是完全相同的代碼,與我的文本編輯器中的縮進相同。 –

回答

0

是否有任何理由要使用的分割功能?

allwords.append(line.strip().split(',')) 

分裂()函數返回的分隔符所以即使在沒有分隔字符串分隔的項目列表,該函數將返回列表

"helloworld".split(",") # returns ["helloworld"] 

如果你只想要拆分後的第一個元素,你可以使用:

allwords.append(line.strip().split(',')[0]) 
+0

分裂的原因是對函數的誠實不完全理解。我認爲它完全符合我的意願,事實並非如此@解決方案由@jasonharper評論,但據我瞭解,現在分裂是不必要的,謝謝您花時間回答! –

相關問題