I am writing a simple program for a homework problem and It seems to be skipping my if statement. I have looked at other questions posed, and the problems there do not seem to be my problem so I am hoping you can help.
def isWordGuessed(secretWord, lettersGuessed):
if lettersGuessed == []:
return False
else:
for i in lettersGuessed:
if i in secretWord == False:
return False
else:
if i == lettersGuessed[-1]:
return True
When I place in some print functions to see what it is doing, it completely skips
if i in secretWord == False:
I have placed right above this line
print i in secretWord
and it will print out the correct Boolean, but even when it prints False, it still skips the if statement. I feel like I must be overlooking something pretty basic, but what it is I can't seem to figure out, so any help would be appreciated. Thanks
Edit:
Here is an example of a call to this function with inputs
isWordGuessed('apple',['a','e','i','k','p','r','s'])
Replace
if i in secretWord == False:
withif i not in secretWord
Wouldnt it be the same just doing:
``
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:
You can do also do this with a generator expression and
all()
:This doesn't do what you think it does. If you want this path to be taken when
i
isn't insecretWord
, you wantWhat you have does a chained comparison. First, it checks
If that's true, it then checks
If that's true (which it won't be), it then takes the
if
path.