2009-05-23 174 views
0

我正在嘗試學習python,我在嘗試一個hang子手遊戲。但是,當我嘗試將用戶的猜測與單詞進行比較時,它不起作用。我錯過了什麼?我的hang子手遊戲的問題

import sys 
import codecs 
import random 

if __name__ == '__main__': 
    try: 
     wordlist = codecs.open("words.txt", "r") 
    except Exception as ex: 
     print (ex) 
     print ("\n**Could not open file!**\n") 
     sys.exit(0) 

    rand = int(random.random()*5 + 1) 
    i = 0 

    for word in wordlist: 
     i+=1 
     if i == rand: 
      print (word, end = '') 
      break 

    wordlist.close() 

    guess = input("Guess a letter: ") 
    print (guess) #for testing purposes 

    for letters in word: 
     if guess == letters: 
      print ("Yessssh") 

#guessing part and user interface here 
+2

你的代碼做錯了什麼?什麼不行? – RexE 2009-05-23 21:35:50

+2

不知道你的具體錯誤是什麼,但這裏有一些關於重構的提示: - 使用random.randint()而不是random.random() - 要獲得單詞列表,可以使用open(「words .txt「,」r「)。readlines() - 除了最後一個for循環,你只是說」如果猜字「 – RexE 2009-05-23 21:37:33

回答

8

在你的「for word in wordlist」循環中,每個單詞將以換行符結束。嘗試添加word = word.strip()作爲下一行。

if guess in word: 
    print ("Yessssh") 

特別提示:

順便說你的最後一個循環可以替換爲加入「調試輸出」的時候,它往往是一個好主意,使用再版(處理字符串時尤其如此)。例如,您的線路:

print (guess) #for testing purposes 

也許,如果你寫的更加有用:

print (repr(guess)) #for testing purposes 

是否有guess奇怪的字符這樣,你會在你的調試輸出更容易看到它們。

0

這是我做我的劊子手遊戲:

 for x in range(0, len(secretword)): 
      if letter == secretword[x]: 
       for x in range(len(secretword)): 
        if secretword[x] in letter: 
         hiddenletter = hiddenletter[:x] + secretword[x] +hiddenletter[x+1:] 

    for letter in hiddenletter: 
      print(letter, end=' ') 

secretWord中是隱藏的詞,用戶試圖猜測。 隱藏字母包含單詞中的「_」數量:ie hiddenletter =「_」* len(secretword)

這會用正確猜測的字母替換空格,然後在正確的位置顯示帶下劃線的下劃線 我盡了全力...