我正在尝试学习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
答案 0 :(得分: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
中有奇怪的字符,您将在调试输出中更容易地看到它们。
答案 1 :(得分: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)
用正确猜到的字母替换空白,然后在正确的位置显示带有字母的下划线 我尽了最大努力......