@timur_gis

Почему не работает выражение на Python 2.7, а в 3.6 работает?

5c3500701548b540589488.png
SOSTAV='5C3B2E'
[''.join( c for c in SOSTAV [0:4] if  c not in '1234567890+') ,'',''.join( c for c in SOSTAV [0:3] if  c not in '1234567890+')][
( 0 if SOSTAV[0:2] == u'10'
else 1 if SOSTAV[0:2] < u'10'
else 2 
)]+'.'+['', 'СП', 'ПП','ЧП'][
( 0 if (['9',     SOSTAV[0:1]][
( 0 if             SOSTAV[0:2] == '10'
else 1 
)]) < '1'
else 1 if (['9',SOSTAV[0:1]][
( 0 if             SOSTAV[0:2] == '10'
else 1 
)]) <= '4'
else 2 if (['9',SOSTAV[0:1]][
( 0 if             SOSTAV[0:2] == '10'
else 1 
)]) <= '7'
else 3
)]
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
@deliro
Агрессивное программирование
Господи, что это за жесть? Это нельзя прочитать, это идеальная обфускация. Даже прогнав через автоформаттер, я всё равно нихрена не понял

SOSTAV = "5C3B2E"
[
    "".join(c for c in SOSTAV[0:4] if c not in "1234567890+"),
    "",
    "".join(c for c in SOSTAV[0:3] if c not in "1234567890+"),
][(0 if SOSTAV[0:2] == u"10" else 1 if SOSTAV[0:2] < u"10" else 2)] + "." + [
    "",
    "СП",
    "ПП",
    "ЧП",
][
    (
        0
        if (["9", SOSTAV[0:1]][(0 if SOSTAV[0:2] == "10" else 1)]) < "1"
        else 1
        if (["9", SOSTAV[0:1]][(0 if SOSTAV[0:2] == "10" else 1)]) <= "4"
        else 2
        if (["9", SOSTAV[0:1]][(0 if SOSTAV[0:2] == "10" else 1)]) <= "7"
        else 3
    )
]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Fixid
Вы бы хоть ошибку указали. Так-то я уже догадываюсь где должно упасть
UPD. добавить # -*- coding: utf-8 -*- в начале файла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы