If the number is less than 10, return one, otherwise is it less than 100, ...
You should prefer the simplest tool that can do the job. Multiplication is simpler than division. You could digress about floating point errors (Python has infinite-precision integers, but not infinite- precision floats) or performance (division may be in some contexts meaningfully slower) but those are just digressions, the important thing is that it's more complicated.
The edge cases also seem completely clear to me in this approach, you won't accidentally write <= 100, and 0 is handled automatically.
Of course, the division and log and string methods are all fine in practice, but I'm surprised not to see this alternative mentioned.