我已经在这个程序上停留了一段时间了。基本上,我一直在尝试获取代码以显示代码的答案部分。
我能够使它显示失败消息,但是当我正确回答并显示祝贺消息时,它将无法工作。我使用了两个while循环(一个可能看起来重复且不必要),一个for循环和三个if语句。请帮忙!
我已经使用了我之前说过的所有循环,并尝试删除其中一些循环。我的教授告诉我删除其中一个循环并更改我尝试过的“ i = 0”,但似乎无济于事。我了解到'chances'变量是不必要的,我可以将其替换为'i',但是由于某些原因,它确实可以像以前一样工作。甚至比以前更容易出现问题。
list_of_words = ['cool', 'ok', 'sure', 'sickkkk', 'what', 'how']
random_word = random.choice(list_of_words)
for letter in random_word:
underscore = '_ '*len(random_word)
print('The answer so far is '+underscore+' ')
answer = random_word
answer_list = ['_']*len(answer)
chances = 0
incorrect = 4
underscore = ''
while chances <len(answer) and incorrect > 0:
i = 0
guess = input('Guess a letter ('+ str(incorrect) +' guesses remaining):')
while i< len(answer):
if answer[i] == guess:
answer_list[i] = guess
i = i + 1
if guess in answer:
print('the answer so far is ' + ' '.join(answer_list))
chances += 1
else:
print('the answer so far is ' + ' '.join(answer_list))
chances -= 1
incorrect = incorrect - 1
if guess == answer_list:
print('Good job! You found the word '+answer+'.')
else:
print('Not quite, the correct word was '+answer+'. Better luck next time.')
input('Press enter to end the game.')
答案 0 :(得分:1)
您的代码中有两个问题使算法失败。第一个是您正在将answer_list
与guess
进行比较,而应该将其与answer
进行比较。
即使在解决此问题之后,也永远不会显示祝贺消息,因为answer == answer_list
永远不会True
。尝试打印answer
并在answer_list
行之前打印if answer == answer_list:
,然后自己比较两个变量,看它们是否相等,您会发现第二个问题。
这样做时,您可能会发现join
函数很有用。这是一个示例:
my_list = ["I", "like", "code"]
''.join(my_list)
> 'Ilikecode'
答案 1 :(得分:0)
问题似乎出在guess == answer_list
上。 guess
是一个字母,而answer_list
由几个字母组成。我认为您要写的是''.join(answer_list) == answer
。