Python. Подскажите пожалуйста почему не работает конструкция if else когда я ее ужимаю в одну сторку

Без сокращения работает.

s = input()
k, l, m = -1, len(s)//2, 0
for i in range(l):
    if s[i] == s[k]:
        k-=1
    else:
        m=1
print("it is") if m==0 else print("its not")

С сокращением не работает.

s = input()
k, l, m = -1, len(s)//2, 0
for i in range(l):
    k-=1 if s[i]==s[k] else m=1
print("it is") if m==0 else print("it's not")

Это программа определяющая вводится полиндром или нет. Зачем я ужимаю в 1 строку это дело 10ое, я просто хочу научиться это делать и разобраться почему не работает.


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

Автор решения: Руслан

1 вариант.

    s = input()
    k, l, m = -1, len(s)//2, 0
    for i in range(l):
        if s[i] == s[k]:
            k-=1
        else:
            m=1
    print("it is") if m==0 else print("its not")

2 вариант.

    s = input()
    k, l, m = -1, len(s)//2, 0
    for i in range(l):
        k-=1 if s[i]==s[k] else m=1
    print("it is") if m==0 else print("it's not")
→ Ссылка
Автор решения: dIm0n

Тернарный оператор работает для expressions, а не для statements.

Поэтому можно написать так:

k -= 1 if s[i]==s[k] else -1

Но нельзя так:

k-=1 if s[i]==s[k] else m=1

Для принта всё в порядке.

→ Ссылка