By using a do-while loop, you don't have to handle the special case of zero (although one could argue that the do-while loop is the special handling for zero). Python does not have such a loop, so you need to do an infinite loop with an explicit break and I know some people recoil in horror at the sight of such code.
def digitlength(n):
digits = 0
while True:
digits += 1
n /= 10
if n == 0:
return digits