Python 如何解决Hangman游戏中的单词生成错误?
建筑刽子手游戏。在《刽子手》游戏中,玩家在输掉游戏之前只有6次错误的猜测(头部、身体、2条腿和2只手臂)。我们加载了一个随机单词列表并从中选择了一个单词。然后我们编写了猜测字母并向用户显示该信息的逻辑。在本练习中,我们必须将其全部放在一起,并添加处理猜测的逻辑 因此,我在一些帮助下制作了这个程序,但仍然有一个愚蠢的小问题即将出现,那就是生成一个随机单词 请告诉我做错了什么,如果你想运行这个程序,这将帮助你更好地理解我说的话Python 如何解决Hangman游戏中的单词生成错误?,python,Python,建筑刽子手游戏。在《刽子手》游戏中,玩家在输掉游戏之前只有6次错误的猜测(头部、身体、2条腿和2只手臂)。我们加载了一个随机单词列表并从中选择了一个单词。然后我们编写了猜测字母并向用户显示该信息的逻辑。在本练习中,我们必须将其全部放在一起,并添加处理猜测的逻辑 因此,我在一些帮助下制作了这个程序,但仍然有一个愚蠢的小问题即将出现,那就是生成一个随机单词 请告诉我做错了什么,如果你想运行这个程序,这将帮助你更好地理解我说的话 import random def generate():
import random
def generate():
Words = []
with open('sowpods.txt', 'r') as f:
line = f.readline().strip()
Words.append(line)
while line:
line = f.readline().strip()
Words.append(line)
index = random.randint(0, len(Words) - 1)
return Words[index]
def ask_user_for_next_letters():
letter = input("Guess Your Letter: ")
return letter.strip().upper()
def generate_word_string(word, letter_guessed):
output = []
for letter in word:
if letter in letter_guessed:
output.append(letter.upper())
else:
output.append("_")
return " ".join(output)
print("Welcome To Hangman!")
if __name__ == "__main__":
Secret = generate()
letter_to_guess = set(Secret)
correct_letters = set()
incorrect_letters = set()
num_guesses = 0
while (len(letter_to_guess) > 0) and num_guesses < 6:
guess = ask_user_for_next_letters()
#Checks If We Already Guessed That Letter
if guess in correct_letters or guess in incorrect_letters:
print("You Already Guessed That!")
continue
#If The Guess Was Correct
if guess in letter_to_guess:
#Update The letter_to_guess
letter_to_guess.remove(guess)
#Update The Correct Letters Guessed
correct_letters.add(guess)
else:
incorrect_letters.add(guess)
#Only Update The Number Of Guesses
#If You Guess Incorrectly
num_guesses += 1
word_string = generate_word_string(Secret, correct_letters)
print(word_string)
print("You Have {} Guesses Left".format(6 - num_guesses))
#Tell The User They Have Won Or Lost
if num_guesses < 6:
print("Congratulations! You Correctly Guessed The Word {}!".format(Secret))
else:
print("Loser!".format(Secret))
随机导入
def generate():
单词=[]
以open('sowpods.txt','r')作为f:
line=f.readline().strip()
Words.append(行)
while line:
line=f.readline().strip()
Words.append(行)
索引=random.randint(0,len(单词)-1)
返回单词[索引]
def向用户询问下一个字母()
字母=输入(“猜你的字母:”)
返回字母.strip().upper()
def生成单词字符串(单词、字母猜测):
输出=[]
对于大写字母:
如果字母中的字母被猜到:
output.append(letter.upper())
其他:
output.append(“\”)
返回“”连接(输出)
打印(“欢迎来到刽子手!”)
如果名称=“\uuuuu main\uuuuuuuu”:
Secret=generate()
字母\u到\u guess=集合(秘密)
更正字母=集合()
不正确的字母=集合()
num_猜测=0
而(len(字母到猜测)>0)和num(猜测)<6:
猜测=向用户询问下一个字母()
#检查我们是否已经猜到了那封信
如果猜测字母正确或猜测字母错误:
打印(“你已经猜到了!”)
持续
#如果猜测正确的话
如果用字母_至_猜测:
#将字母_更新为_guess
字母到猜。删除(猜)
#更新猜测的正确字母
更正字母。添加(猜测)
其他:
不正确的字母。添加(猜测)
#只更新猜测的数量
#如果你猜错了
num_猜测+=1
单词字符串=生成单词字符串(机密、正确的字母)
打印(字串)
打印(“您还有{}个猜测”。格式(6-num_猜测))
#告诉用户他们赢了或输了
如果num_猜测值小于6:
打印(“恭喜!你猜对了单词{}!”。格式(秘密))
其他:
打印(“失败者!”。格式(机密))
修改
import random
def generate():
words = []
with open('sowpods.txt', 'r') as f:
for line in f:
line = line.strip()
if line:
words.append(line)
return random.choice(words).upper()
def ask_user_for_next_letters():
letter = input("Guess Your Letter: ")
return letter.strip().upper()
def generate_word_string(word, letter_guessed):
output = []
for letter in word:
if letter in letter_guessed:
output.append(letter.upper())
else:
output.append("_")
return " ".join(output)
if __name__ == "__main__":
print("Welcome To Hangman!")
secret = generate()
letter_to_guess = set(secret)
correct_letters = set()
incorrect_letters = set()
num_guesses = 0
while (len(letter_to_guess) > 0) and num_guesses < 6:
guess = ask_user_for_next_letters()
#Checks If We Already Guessed That Letter
if guess in correct_letters or guess in incorrect_letters:
print("You Already Guessed That!")
continue
#If The Guess Was Correct
if guess in letter_to_guess:
#Update The letter_to_guess
letter_to_guess.remove(guess)
#Update The Correct Letters Guessed
correct_letters.add(guess)
else:
incorrect_letters.add(guess)
#Only Update The Number Of Guesses
#If You Guess Incorrectly
num_guesses += 1
word_string = generate_word_string(secret, correct_letters)
print(word_string)
print("You Have {} Guesses Left".format(6 - num_guesses))
#Tell The User They Have Won Or Lost
if num_guesses < 6:
print("Congratulations! You Correctly Guessed The Word {}!".format(secret))
else:
print("Loser!".format(secret))
随机导入
def generate():
单词=[]
以open('sowpods.txt','r')作为f:
对于f中的行:
line=line.strip()
如果行:
words.append(行)
返回random.choice(单词).upper()
def向用户询问下一个字母()
字母=输入(“猜你的字母:”)
返回字母.strip().upper()
def生成单词字符串(单词、字母猜测):
输出=[]
对于大写字母:
如果字母中的字母被猜到:
output.append(letter.upper())
其他:
output.append(“\”)
返回“”连接(输出)
如果名称=“\uuuuu main\uuuuuuuu”:
打印(“欢迎来到刽子手!”)
secret=generate()
字母\u到\u guess=集合(秘密)
更正字母=集合()
不正确的字母=集合()
num_猜测=0
而(len(字母到猜测)>0)和num(猜测)<6:
猜测=向用户询问下一个字母()
#检查我们是否已经猜到了那封信
如果猜测字母正确或猜测字母错误:
打印(“你已经猜到了!”)
持续
#如果猜测正确的话
如果用字母_至_猜测:
#将字母_更新为_guess
字母到猜。删除(猜)
#更新猜测的正确字母
更正字母。添加(猜测)
其他:
不正确的字母。添加(猜测)
#只更新猜测的数量
#如果你猜错了
num_猜测+=1
单词字符串=生成单词字符串(机密、正确的字母)
打印(字串)
打印(“您还有{}个猜测”。格式(6-num_猜测))
#告诉用户他们赢了或输了
如果num_猜测值小于6:
打印(“恭喜!你猜对了单词{}!”。格式(秘密))
其他:
打印(“失败者!”。格式(机密))
请特别注意您希望发生的事情,以及您需要帮助的具体情况。这里没有一个可以回答的问题。解决方案是正确的。