为什么部分if语句显示,而另一部分不显示?

时间:2019-10-05 03:08:21

标签: python

我已经在这个程序上停留了一段时间了。基本上,我一直在尝试获取代码以显示代码的答案部分。

我能够使它显示失败消息,但是当我正确回答并显示祝贺消息时,它将无法工作。我使用了两个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.')

2 个答案:

答案 0 :(得分:1)

您的代码中有两个问题使算法失败。第一个是您正在将answer_listguess进行比较,而应该将其与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