为什么我的if语句的一部分显示了,而另一部分没有显示?

2024-04-20 00:20: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.')

Tags: theanswerlenifsorandomlistword
2条回答

代码中有两个问题导致算法失败。第一个是你在比较answer_listguess,而你应该比较它和answer。你知道吗

即使解决了这个问题,也不会显示祝贺消息,因为answer == answer_list永远不会True。试着在第if answer == answer_list:行之前打印answeranswer_list,然后自己比较这两个变量看它们是否相等,你就会发现第二个问题。你知道吗

当您这样做时,您可能会发现join函数很有用。举个例子:

my_list = ["I", "like", "code"]
''.join(my_list)
> 'Ilikecode'

问题似乎是guess == answer_listguess是一个字母,而answer_list是由几个字母组成的。我想你想写的是''.join(answer_list) == answer。你知道吗

相关问题 更多 >