Yes, numbers is pretty easy if you have your test working. The logic that works best is this:
number = int(word)
# it's a number, if the code gets here, add it as a number tuple
# not a number, so see if it's in the words dict like you normally do
That’s it. When you attempt to convert something that’s not a number to a number you get a ValueError. That means you can use an except to handle that situation and then treat it like something that’s in a word.
Also, copying what someone else does is how everyone gets started. I can’t think of a single programmer ever who learned how to do something in the field totally on their own. There was always some paper, book, or other code that they copied to get started, then they changed it or wrote their own after they understood it. If you’re under the impression that you should be able to just crank out solutions without this kind of basic research, or that copying is wrong then you’re mistaken. Copying is awesome and you should do it a lot.
The trick though is to really try to understand what you copied after you get it working. What I like to do is change it in different ways to make sure I understand it, and then I like to try and make my own thing from memory, with a little peaking when I get stuck.
Edit: And yes, you should add to your test to test that numbers work.