Решение задачи на Python

Вроде бы все должно работать, но система не пропускает.

Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева нулями. Десятичная запись числа симметрична, если при прочтении слева направо и справа налево получается одно и то же число.

При решении задачи можно пользоваться только целочисленными арифметическими операциями. Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями.

H = int(input())

f1 = (H // 1000)                                # первое число в четырехзначном
f12 = (H % 10)                                  # последнее число в четырехзначном
s1 = (H - (f1 * 1000)) // 100                   # второе слева число
w1 = (H - (f1 * 1000) - (s1 * 100)) // 10       # третье число слева
q = (f12 * 1000) + (w1 * 100) + (s1 * 10) + f1  # обираем с конца

print(H // q)

Помогите решить. Где моя ошибка?


Ответы (4 шт):

Автор решения: Jack_oS

Можно сравнить строку, представляющую число, с такой же перевернутой, не переводя в int:

num_str = input().zfill(4)

if num_str == num_str[::-1]:
    print(1)
else:
    print(42)

Если использовать .zfill() не разрешено, можно дополнить до четырех знаков самописным куском, например:

if len(num_str) < 4:
    num_str = '0'*(4-len(num_str)) + num_str
→ Ссылка
Автор решения: Akina
H = int(input())
print(H // 1000 == H % 10 and H // 100 % 10 == H % 100 // 10)

Правда, выводит True/False - но ведь это же не проблема?

→ Ссылка
Автор решения: GrAnd

В комментариях расписано, как и что считается.

V = int(input())
Axxx = V // 1000            # цифра на позиции тысяч
xBxx = V % 1000 // 100      # цифра на позиции сотен
xxBA = xBxx * 10 + Axxx     # зеркальное двузначное число из цифр сотен и тысяч
xxCD = V % 100              # младшая (правая) половина числа
symmetry = xxBA - xxCD      # если 0 - то исходное число симметрично
print(symmetry + 1)         # выведет 1 если symmetry = 0, иначе будет другое число
→ Ссылка
Автор решения: TigerTV.ru

Можно решить так:

H = input()
print(int(H[0]) - int(H[3]) + 16*(int(H[1]) - int(H[2])) + 1)
→ Ссылка