program ignoring if statement, and printing True when False

谁都会走 提交于 2019-12-02 05:32:47
        if i in secretWord == False:

This doesn't do what you think it does. If you want this path to be taken when i isn't in secretWord, you want

        if i not in secretWord:

What you have does a chained comparison. First, it checks

i in secretWord

If that's true, it then checks

secretWord == False

If that's true (which it won't be), it then takes the if path.

Replace if i in secretWord == False: with if i not in secretWord

Wouldnt it be the same just doing:

``

def isWordGuessed(secretWord, lettersGuessed):

if not lettersGuessed:
    return False
for i in lettersGuessed:
    if i not in secretWord:
        return False
return True

What your doing is called chained comparisons.

Edit: My bad, too late

BR Daniel

The other answers explain the error in the code well, but you can simplify your code a bit like this:

def isWordGuessed(secretWord, lettersGuessed):
    for i in lettersGuessed or ['_']: # uses ['_'] when lettersGuessed = []
        if not i in secretWord:
            return False
    return True

You can do also do this with a generator expression and all():

def isWordGuessed(secretWord, lettersGuessed):
    return all([i in secretWord for i in lettersGuessed] or [False])
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!