注意:我无法使用列表来解决此问题。这对字符串操作是一个挑战。你知道吗
它应该让用户输入一个单词并显示星号,像hangman一样填写猜测的字母
def word_guess():
word = input('Enter the word: ')
print('\n'*100)
print('Guess the word: ')
guess_string='*' * len(word)
print(guess_string)
letters_left = word
letters_guessed = '*' * len(word)
while '*' in letters_guessed:
new_left = ''
new_display = ''
guessed = ''
guess = input('Enter a letter: ')
guessed += guess
while guess in guessed:
print('Already guessed. Try again.')
guess = input('Enter guess: ')
for char in letters_left:
if guess == char:
new_display += char
new_left += '*'
else:
new_display += '*'
new_left += char
letters_guessed = new_display
letters_left = new_left
print(new_display)
这将产生以下结果:
这让我很不安。我克服这个问题的最后一个策略。你知道吗
这里有一堆奇怪的东西可能会有助于修复。你知道吗
每次通过循环时,您都将
guessed
重置为''
。可能想在外面。设置
guessed += guess
,然后立即使用while guess in guessed
。。。所以你总是会得到Already guessed
提示至少一次我不太清楚
letters_left
的意义是什么与
else
子句中的new_display += '*'
不同,您可能希望从letters_guessed
中提取显示字符,以便显示所有已猜测的字母(对于未猜测的字母,*
)对于您似乎要问的特定问题:
想想这是怎么回事。它将
guessed
设置为''
。然后,如果我键入a
,它将guessed
设置为'' + 'a'
,即'a'
。然后,while guess in guessed:
会一直问我新的猜测,直到其中一个不在'a'
。你知道吗这显然没有任何用处。我想你想做的是这样的:
现在,
guessed
是我迄今为止尝试的所有猜测,不包括我现在尝试的猜测,而不仅仅是我现在尝试的猜测,因此while
循环更有意义。你知道吗当然,你的程序还有多个其他的bug,所以如果不修复它们,它仍然无法工作,但这应该能让你克服那个bug。你知道吗
同时,您应该考虑执行以下操作之一:
print
调用,以便在不确定发生了什么的地方转储相关变量。你知道吗相关问题 更多 >
编程相关推荐