if (x> 2): print (x) но 1 печатается, знаете ли вы почему? (в питоне, вид Джанго) - PullRequest
0 голосов
/ 14 октября 2019

код

for sn in skil_note:
    if(sn.category.id > int(ca_num) & sn.category.id != 99):  # ca num = 2
        print("sn.category.id : ", sn.category.id)
    else:
        print("haha: " , sn.category.id)

результат

Quit the server with CTRL-BREAK.
ca_num :  2
sn.category.id :  89
sn.category.id :  89
sn.category.id :  89
sn.category.id :  1
sn.category.id :  1
haha:  2
haha:  2
haha:  2
haha:  2
haha:  2
sn.category.id :  3
sn.category.id :  3
sn.category.id :  3
sn.category.id :  3
sn.category.id :  3
sn.category.id :  3
sn.category.id :  5
sn.category.id :  5
sn.category.id :  5
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  6
sn.category.id :  8
sn.category.id :  8
sn.category.id :  1
sn.category.id :  10
sn.category.id :  10
sn.category.id :  10

Если вы знаете причину, спасибо 2> 1, но если вы можете сказать мне, почему выводится 1, спасибоутверждение if неверно?

Стоит ли сравнивать по-другому? Есть ли проблема с форматом операторов for или if?

Ответы [ 2 ]

3 голосов
/ 14 октября 2019

Вы должны сделать (обратите внимание на и ):

for sn in skil_note:
    if(sn.category.id > int(ca_num) and sn.category.id != 99):  # ca num = 2
        print("sn.category.id : ", sn.category.id)
    else:
        print("haha: " , sn.category.id)
1 голос
/ 14 октября 2019

В вашем операторе if используйте and вместо &:

if a and b:
    ...

В то время как and является логическим оператором, который используется в логических операциях для выполнения «логического И», & - побитовый оператор, который выполняет «побитовое И».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...