Python 蟒蛇刽子手没有透露信件
我正在开发一个基于.txt文件wordlist的Python版本的hangman。出于某种原因,在初始播放结束后的播放结束中,脚本不会显示某些字母。其他的一切或多或少都是我想要的 我的代码:Python 蟒蛇刽子手没有透露信件,python,Python,我正在开发一个基于.txt文件wordlist的Python版本的hangman。出于某种原因,在初始播放结束后的播放结束中,脚本不会显示某些字母。其他的一切或多或少都是我想要的 我的代码: import random wordlist = open("wordlist.txt").read().split() word = random.choice(wordlist) strikes = 0 hidden_letters = [] alphabet = "abcdefghijklmnopq
import random
wordlist = open("wordlist.txt").read().split()
word = random.choice(wordlist)
strikes = 0
hidden_letters = []
alphabet = "abcdefghijklmnopqrstuvwxyz"
guesses = []
def new_word():
global word
global guesses
word = random.choice(wordlist)
for letter in set(word):
if letter in alphabet:
hidden_letters.append(letter)
guesses = []
def current_progress():
for letter in word:
if letter in hidden_letters:
print '_',
elif letter == ' ':
print ' ',
else:
print letter,
print "\n"
def play_again():
global strikes
print "Would you like to play again?"
answer = raw_input("y/n: ")
if answer == "y":
strikes = 0
main()
elif answer == "n": exit(0)
else:
print "That's not a valid answer."
play_again()
def letter_in_word(x):
global strikes
global hidden_letters
if x in word:
hidden_letters.remove(x)
print "That letter is in the word."
current_progress()
if hidden_letters == []:
print "You win!"
play_again()
else:
print "You have %d strike(s)." % strikes
elif not x in word:
print "That letter is not in the word."
current_progress()
strikes = strikes + 1
print "You have %d strike(s)." % strikes
def main():
new_word()
current_progress()
global strikes
while strikes < 6 and not hidden_letters == []:
print "Guess a letter. \n Letters that have been already guessed are:", guesses
guess = raw_input("> ")
if guess in alphabet and len(guess) == 1:
if not guess in guesses:
guesses.append(guess)
letter_in_word(guess)
else:
print "You've already guessed that letter. Pick another."
current_progress()
print "You have %d strikes." % strikes
else:
print "Sorry, that's not a valid guess."
current_progress()
print "You have %d strikes." % strikes
if strikes == 6:
print "Oop! You lose."
print "The answer was:", word
play_again()
print "Welcome to Hangman!"
print "Six strikes and you lose."
print "----------"
main()
你的问题是:当玩家猜到当前单词和前一个单词中存在的字母,但在前一个单词中没有猜到时,玩家输掉了游戏,该字母仍在隐藏字母列表中,因为removex只删除该字母的第一个实例。换句话说,在某些执行过程中,列表包含两个相同的字母,这违反了代码的隐含要求。在添加新词的字母之前,可以通过在new_word函数中添加隐藏的字母=[]来解决此问题 从重点矿井: list.removex 从列表中删除值为x的第一项。这是一个错误 如果没有这样的项目
你的问题是:当玩家猜到当前单词和前一个单词中存在的字母,但在前一个单词中没有猜到时,玩家输掉了游戏,该字母仍在隐藏字母列表中,因为removex只删除该字母的第一个实例。换句话说,在某些执行过程中,列表包含两个相同的字母,这违反了代码的隐含要求。在添加新词的字母之前,可以通过在new_word函数中添加隐藏的字母=[]来解决此问题 从重点矿井: list.removex 从列表中删除值为x的第一项。这是一个错误 如果没有这样的项目
或者,我想你可以添加声明
del hidden_letters[:]
论新词的乞讨。它会清除隐藏的字母列表。或者,我想你可以添加声明
del hidden_letters[:]
论新词的乞讨。它会清除隐藏的字母列表。您能给我们一个具体的例子说明您遇到的问题吗?或者尝试使用调试器来缩小问题的范围?您能给我们一个您遇到的问题的具体示例吗?或者尝试使用调试器来缩小问题的范围?而且,使用集合可以完全消除整个问题,这将防止重复的可能性。并且,使用集合可以完全消除整个问题,这将防止重复的可能性。