Numbers to English Strings in Python3
It looks mostly fine. I only have three comments:


The definitions of zero_to_nineteen and tens  is too long for my taste. It will look more readable like this::

tens = ("zero", "ten", "twenty", "thirty", "forty",
        "fifty", "sixty", "seventy", "eighty", "ninety")

Reject floats straight away is too much. One cannot then ask for the spelling of 1e6. I would do:

if isinstance(number, float):
     if number % 1 == 0:
         number = int(number)
     else:
         raise ValueError("number must be an integer")

elif not isinstance(number, int):
     raise ValueError("number must be a number")


Note that your function would happily accept things like 1j, "abc", None...
For Guido's beard, don't roll your own log function! use int(math.log10)