python: 多重复合and & or

function

def tt(a,b):
    trend = []
    if b == 0 or b == 3 or b == 7 or b == 4 or (a == 0 or a ==1 or a == 5 and b == 2) or (a == 5 and b == 6):
        trend.append(1)
    elif b == 5 or (a ==2 or a ==3 or a ==4 and b == 6) or (a != 5 and b == 1):
        trend.append(-1)
    elif (a == 3 or a == 4 or a == 6 or a == 7 and b ==2) or (a == 0 or a == 1 or a == 7 and b == 6) or (a == 5 and b == 1):
        trend.append(0)
    else:
        trend.append(0)
    return trend
tt = tt(2,2)
tt
结果:[-1]

问题:
会进入执行这一条

elif b == 5 or (a ==2 or a ==3 or a ==4 and b == 6) or (a != 5 and b == 1):
        trend.append(-1)

因为执行到a == 2就直接进入了…
但本来的意思是:当a == 2 且 b == 6 时才执行阿…

改成这样:

def tt(a,b):
    trend = []
    if b == 0 or b == 3 or b == 7 or b == 4 or (a == 0 or a ==1 or a == 5 and b == 2) or (a == 5 and b == 6):
        trend.append(1)
    ###
    ### 写的详细具体,没有歧义
    elif b == 5 or (a ==2 and b == 6) or (a ==3 and b == 6) or (a ==4 and b == 6) or (a != 5 and b == 1):
        trend.append(-1)
    elif (a == 3 or a == 4 or a == 6 or a == 7 and b ==2) or (a == 0 or a == 1 or a == 7 and b == 6) or (a == 5 and b == 1):
        trend.append(0)
    else:
        trend.append(0)
    return trend
tt = tt(2,2)
tt
结果:[0]
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值