Estoy un poco perplejo por esta (presumiblemente muy simple) problema.
Simplemente, estoy tratando de encontrar el primer dígito(s) en cualquier número (relacionados con la pregunta). Aquí hay algunos buenos código de python (a partir de esta pregunta):
import math
def first_n_digits(num, n):
# where n is the number of leading digits of interest
return num // 10 ** (int(math.log(num, 10)) - n + 1)
Esto funciona bien para la mayoría de los números, por ejemplo:
>>> first_n_digits(123456, 1)
1
>>> first_n_digits(123456, 2)
12
>>> first_n_digits(123456, 3)
123
>>> first_n_digits(123456, 4)
1234
>>> first_n_digits(123456, 5)
12345
>>> first_n_digits(123456, 6)
123456
El problema es que esto no funciona para num=1000
y n=1
.
first_n_digits(1000, 1)
10
Este problema no aparece cuando num = 10,100,10000,100000
. Sólo num = 1000
.
¿Cómo se puede lidiar con este caso extremo? No he encontrado ninguna a los demás hasta el momento. Espero que haya alguna solución muy simple que he pasado por alto.