2014-04-15 14 views
0

我試圖設置一個內存文字遊戲,其中程序讀取一個文本文件用10個單詞。程序讀取文件並創建一個9個單詞列表.pop()最後一個單詞10。這些單詞隨機洗牌,然後再次顯示與第二個單詞相同的單詞隨機洗牌最後一個單詞.pop()和第一次刪除替換單詞(刪除/替換) - 希望這種解釋。python如果答案正確顯示一個做得好的消息?

我有一個關於反饋正確迴應的問題wh enter code here用戶猜測正確的答案(它不是)其他一切似乎都在工作。

import time 
from random import shuffle 

file =open('Words.txt', 'r') 
word_list = file.readlines() 

word_list [0:9] 
shuffle(word_list) 
extra_word=(word_list.pop()) 

print (extra_word)#substitute word for 2nd question (delete this line) 
print '...............' 

print (word_list) 

print ('wait and now see the new list') 
time.sleep(3) 
print ('new lists') 

word_list [0:9] 
shuffle(word_list) 
newExtra_word=(word_list.pop()) 

print (newExtra_word)#replace word for 1st question (delete this line)  

word_list.insert(9,extra_word)# replace word 

print (word_list) 

上面這段代碼工作正常(什麼我想要它做的。)但是,下面的部分:

#ALLOW FOR 3 GUESSES 
user_answer = (raw_input('can you guess the replaced word: ')).lower() 
count = 0 
while count <=1: 
    if user_answer == newExtra_word: 
      print("well done") 
      break 
    else: 
      user_answer = (raw_input('please guess again: ')).lower() 
      count+=1 
else: 
    print ('Fail, the answer is' + extra_word) 

的代碼並允許猜三次,但不會接受刪除列表項目。有沒有人有任何想法爲什麼?

+0

爲什麼向下票呢? –

+2

Ekhm ... downvote不是我的,但我想這是因爲你的代碼是非常低質量(抱歉說),太複雜。這個問題本身是合法的。我同意它不應該是downvote的理由。 – ElmoVanKielmo

+1

這完全違背了Stackoverflow的精神,因爲他們是初學者或者他們的示例代碼的質量不符合更有經驗的程序員的標準,所以對人進行投票是完全相反的。我真的希望能有辦法向那些權力下放給他們的人羣報告虛假的選票。 –

回答

2

嗯,因爲你上面的代碼不能按你想要的方式工作。

file = open('Words.txt', 'r') 
word_list = file.readlines() 
# you should do file.close() here 

word_list[0:9] 

最後一行實際上沒有做任何事情。它返回word_list中的前10個元素,但您從不將它們分配給任何東西,所以它基本上是NOP。而不是

word_list = word_list[0:9] # now you've removed the extras. 

可能更好的是先洗牌,所以你有一個真正的隨機設置10.爲什麼10?我們爲什麼限制數據?噢,好的...

# skipping down a good ways 
word_list.insert(9, extra_word) # replace word 

我們爲什麼要這樣做?我真的不明白這個操作應該做什麼。

至於待三個猜測:

count = 0 
while count < 3: 
    user_answer = raw_input("Can you guess the replaced word: ").lower() 
    count += 1 
    if user_answer == newExtra_word: 
     print("well done") 
     break 
else: 
    print("Sorry, the answer is " + extra_word) 

等待,你明白了嗎?您正在根據newExtra_word檢查用戶輸入,然後您報告的正確答案爲extra_word。你確定你的代碼邏輯有效嗎?

像你想要做什麼這聽起來是這樣的:

with open("Words.txt") as inf: 
    word_list = [next(inf).strip().lower() for _ in range(11)] 
    # pull the first _11_ lines from Words.txt, because we're 
    # going to pop one of them. 

word_going_in = word_list.pop() 
random.shuffle(word_list) 

print ' '.join(word_list) 

random.shuffle(word_list) 
word_coming_out = word_list.pop() 
# I could do word_list.pop(random.randint(0,9)) but this 
# maintains your implementation 

word_list.append(word_going_in) 
random.shuffle(word_list) 

count = 0 
while count < 3: 
    user_input = raw_input("Which word got replaced? ").lower() 
    count += 1 
    if user_input == word_coming_out: 
     print "Well done" 
     break 
else: 
    print "You lose" 
相關問題