0

我正在尝试学习 python,我正在尝试一个刽子手游戏。但是当我尝试将用户的猜测与单词进行比较时,它不起作用。我错过了什么?

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
4

2 回答 2

8

在您的 " for word in wordlist" 循环中,每个单词都将以换行符结尾。尝试添加word = word.strip()为下一行。

顺便说一句,您的最后一个循环可以替换为:

if guess in word:
    print ("Yessssh")

额外提示:添加“调试打印”时,使用 repr 通常是个好主意(尤其是在处理字符串时)。例如,您的行:

print (guess) #for testing purposes

如果您写以下内容可能会更有用:

print (repr(guess)) #for testing purposes

这样,如果 中有奇怪的字符guess,您将更容易在调试输出中看到它们。

于 2009-05-23T21:31:59.360 回答
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 是用户试图猜测的隐藏词。hidden letter 包含单词中“_”的数量:即 hiddenletter = " _ " * len(secretword)

这会用正确猜到的字母替换空格,然后在正确的地方用字母显示下划线我尽力了......

于 2013-10-20T17:15:34.603 回答