我需要一些代码方面的帮助。我目前正在用python编写hangman代码,并给出一个单词和一个字母,我试图将这个单词添加到下划线中,并显示正确猜出的字母。 举个例子,输入('heedphones',['e','d'])将返回'\u e\u d\u e\u
result = ''
matches = 0
for i in past_guesses:
if i in word:
result += i
else:
status += '_'
matches += 1
return result
这是我尝试过的,但我不断得到“ed”作为回报。有人知道为什么会这样,我怎么能解决吗
计算机的逻辑和人类的逻辑是一样的,你需要检查你单词的字母是否在猜测中,而不是相反。在这两种情况下都需要更新
results
或更多Python:
"".join(i if i in past_guesses else '_' for i in word)
这里是一个通用的模板为一个刽子手游戏。创建一个
board
,即word
的len
。如果我们的guess
在word
,我们将替换这个board
的索引。我们还可以创建一个列表guessed
来附加所有猜测,以便跟踪是否已经尝试了一个条目从这里我们可以建立一个
while
循环,一旦我们的board == word
出现,这个循环就会中断。从user获取guess
,然后检查它是否已经被使用过。如果不是,那么我们使用列表理解来检索索引,评估guess
是否在word
中。如果找到任何索引,我们将board
转换为list,然后替换它们,然后.join()
返回到一个字符串,否则我们可以打印guess not in word
在继续下一个循环之前,我们可以将
guess
附加到guessed
列表,并打印最新的board
在
else
子句中,您是在status
后面加下划线,而不是result
编辑:正如朱利安所指出的,你在错误的事情上循环
如果您的意图是生成一个与原始单词一样长的字符串,那么循环的执行次数应该与单词的长度相同;i、 你应该循环使用
word
的字母,而不是past_guesses
换句话说,如果用户进行了三次猜测,那么函数将返回一个只有三个字母的字符串,这显然不是您想要的
相关问题 更多 >
编程相关推荐