Переусложняешь: a = h // 1000
b = h // 100 % 10
c = h // 10 % 10
d = h % 10 А если хочешь единообразия, то: a = h // 1000 % 10
b = h // 100 % 10
c = h // 10 % 10
d = h // 1 % 10
Код выглядит вполне рабочим, который разбивает четырехзначное число на цифры по разрядам и выводит их. Если у вас возникают ошибки, возможно, проблема не с самим кодом, а с его окружением или с вводом данных.
Если вы хотите ввести четырехзначное число, вы должны убедиться, что вы вводите число, а не строку. Если вы вводите строку, вы получите сообщение об ошибке.
Вот правильно
h = int(input('Введите четырехзначное число: ')
a = h // 1000
b = h % 1000 // 100
c = h % 1000 % 100 // 10
d = h % 1000 % 100 % 10
print('Цифра в позиции тысяч равна', a)
print('Цифра в позиции сотен равна', b)
print('Цифра в позиции десятков равна', c)
print('Цифра в позиции единиц равна ', d)
При запуске этого кода вы должны увидеть приглашение Введите четырехзначное число:. Затем вы можете ввести четырехзначное число и увидеть результат работы программы. Проверьте, правильно ли программа разбила число на цифры, соответствующие разрядам.