OK so I did the project, but it seems like I am having an issue where the only responses I get go straight to the no match intent. I did find another thread about this, but I don’t think I understood the solution. Something about the no_match_intent() going outside the for loop. I’m not sure what to do with it. Can someone please tell me what I am doing wrong here?
I’m afraid I’ve not gone through your code in detail but I believe you use an
if statement to control the flow for that section. Have you made sure any expressions actually evaluate to
True? An additional
To hazard a guess I’d have a very close look at the
re.match function https://docs.python.org/3/library/re.html#re.match and note what it states regarding
Delete the else statement and put the return on the same intent as the for-loop initialization. This fixes the code. But I cannot really explain why so, sorry
I’m not sure what changes you made but I’m glad to hear it worked. Be careful with your use of
re.match though. Should it fail to find a match it always returns
None. If you use then used it in an
if statement that part of the expression would always be
bool(None) == False. It sounds like you re-ordered the way your control flow works at this point so that it now behaves but I think it’s likely that what affected your previous code was this issue. It might not have been the only issue but it probably caused the
else statement to be met far too often.
Putting a debug
print(key) before the
if block should give you a sense of what is happening. The project instructions/hint on this part of the project are misleading but provide an opportunity to learn how to track down bugs.
no_match_intent should only be returned if there is no match after looping on all of the intents. If you follow the instuctions/hint and put the
else block in the
for loop it will only check for a match on the first intent and if not found, will return the