The code has several errors. I think this is what you want:
a = {'0': 'Milhar', '1': 'Centena', '2': 'Dezena', '3': 'Unidade'}
while True:
n = input('Digit a number: ') #só pede a digitação
if n.isnumeric(): #verifica se é composto apenas por dígitos
break #sai do laço se for
else:
print('Apenas numeros') #avisa o erro
r = len(n) #pega a quantidade de dígitos
if r >= 4: #normaliza para o máximo de 4
r = 4
for c in range(0, r): #anda dígito por dígito
print(f'{n[c]}: {a[str(r - c - 1)]}') #imprime a posição de cada caractere digitado
#depois imprime o nome da grandeza pegando do dicionário, o - 1 porque começa do 0
Errors:
x = int(0) #não faz sentido
n = str(input('Digit a number: ')) #não faz sentido usar 'str()' em 'input()' já é string
n = int(n) #ainda não é a hora de converter
if n >= 4: #não faz sentido verificar se o número digitado é maior que 4
r = int(len(n)) #não precisa transformar em int o que já é um
print(f'{a[str(x)]}: {str(n)[r-c]}') #a sintaxe tem tantos erros que nem sei onde começar
x += 1' #não tem porque existir esta variável e tem um erro de sinaxe aí