import random
def random_Words():
print("Lets play HANGMAN")
option = input("Please Chose option \n [1] Animals.\n [2] Countries \n [3] Flowers \n [4] Pakistan's Cities \n");
i=0;
x= "";
if(option=='1'):
path= "code/hangman/Words.Animals"
if(option=='2'):
path="code/hangman/Words.Countries"
if(option=='3'):
path="code/hangman/Words.Flowers"
if(option=='4'):
path="code/hangman/Words.PakCities"
return random.choice(open(path).readlines());
def HangmanGuess(RandomWord, GuessedWord, Chances):
Letters_Guessed = []
if(Chances > 0):
i=0;
GuessOption = input("Guess a Letter :");
if(GuessOption == Letters_Guessed):
print("Already Guessed")
GuessOptionValid= False;
for i in range(len(RandomWord)-1):
if(RandomWord[i] == GuessOption):
GuessedWord= GuessedWord[:i] + GuessOption + GuessedWord[i+1:];
GuessOptionValid =True;
print(RandomWord);
print(GuessedWord);
if(GuessOptionValid):
HangmanGuess(RandomWord,GuessedWord, Chances);
else:
HangmanGuess(RandomWord,GuessedWord, Chances-1);
else:
print('You have lost!!')
Chances = 5
RandomWord = random_Words()
GuessedWord = ''
i=0
for i in range(len(RandomWord)-1):
GuessedWord+= '_'
def Hangman_Drawing(RandomWord,GuessedWord, Chances):
x= HangmanGuess(RandomWord,GuessedWord, Chances);
x = ''
if(GuessedWord!= RandomWord[i]):
if(Chances==4):
print("----------");
print("| | ");
print("| ");
print("| ");
print("| ");
print("| ");
print("| ");
print("-----------");
if(Chances==3):
print("----------");
print("| | ");
print("| O ");
print("| ");
print("| ");
print("| ");
print("| ");
print("-----------");
if(Chances==2):
print("----------");
print("| | ");
print("| O ");
print("| | ");
print("| ");
print("| ");
print("| ");
print("-----------");
if(Chances==1):
print("----------");
print("| | ");
print("| O ");
print("| | ");
print("| / \ ");
print("| ");
print("| ");
print("-----------");
if(Chances==0):
print("----------");
print("| | ");
print("| O ");
print("| --|-- ");
print("| / \ ");
print("| ");
print("| ");
print("-----------");
print(Hangman_Drawing(RandomWord,GuessedWord, Chances));
Hello Guys, Iam遇到了问题,我想张贴一张支票,证明如果在信件'猜对'时输入了任何信件,它会检查信件是否已被输入,因此给出了打印的信息以提醒用户是否有任何信息 我的代码有'检查'代码,但我不知道缺少什么或为什么它不工作,而其余的代码是完全正常的。 对不起,我是非工程师,所以如果缺少任何信息,请原谅 任何帮助,将不胜感激。 感谢。
答案 0 :(得分:0)
您的代码存在许多问题,这些问题会阻止您处理对同一封信的重复猜测。
最明显的一个是您正在进行的测试,以确定用户条目是否已被猜到:
if(GuessOption == Letters_Guessed):
使用==
,您要求GuessOption
等于Letters_Guessed
列表。因为它将是一个字符串,永远不会是真的。我想你想在这里使用in
运算符。它测试左侧的对象是否是右侧容器的成员:
if GuessOption in Letters_Guessed: # parentheses are not necessary in Python conditionals
但这还不足以让它真正发挥作用。局部变量Letters_Guessed
被初始化为空列表,并且永远不会添加任何内容,因此对它的任何成员资格测试将始终为false。您需要将每个猜到的字母添加到列表中的某个位置。
下一个问题是更大的问题。它与您如何组织代码控制流有关。目前,在确定最后一个是否良好之后,您将使用递归继续下一个猜测。但是,这会导致Letters_Guessed
出现问题,因为它是一个局部变量,将在每次递归调用中重新初始化。如果你想坚持递归,你需要在函数调用之间传递Letters_Guessed
列表,就像你传递其他参数一样。我不是真的推荐这个。
更好的解决方案是用循环替换代码的递归结构。特别是,while
循环会很有意义。您可以有一个while
循环来处理每个猜测的后果(例如,在错误的猜测中减少Chances
),以及另一个检查输入以确保其有效的嵌套循环(例如,没有猜到,并且可能会检查其他内容,例如作为一封信并且只是一个字符。)