Вам нужно будет использовать степени 10 и уменьшать размер числа, пока оно не будет иметь количество цифр, соответствующее нужной вам позиции. Тогда результатом будет последний ди git из оставшегося числа. Если число не достаточно велико для n-го числа git слева, возвращается None.
Например:
def nthDigit(d,N):
if N >= 10**d : return nthDigit(d,N//10)
if N >= 10**(d-1) : return N%10
output:
for i in range(1,7):
print( i,nthDigit(i,1234) )
1 1
2 2
3 3
4 4
5 None
6 None
Вы также можете сделать это, используя только умножения и деления:
def nthDigit(d,N,p=1):
if d>0 : return nthDigit(d-1, N, p*10)
if N>=p : return nthDigit(d, N//10, p)
if N>=p//10 : return N%10
Конечно, вы также можете обмануть и использовать строку, но это вообще не потребует рекурсии:
def nthDigit(d,N): return str(N)[d-1:d]