2009-05-23 98 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)

这会用正确猜测的字母替换空格,然后在正确的位置显示带下划线的下划线 我尽了全力...