当idcter
超过maxid
时为什么不重置为0?
maxid=9999
idcter=9999
idcter += 1 if(idcter <= maxid) else 0
print('this is good: ' + str(idcter))
idcter += 1 if(idcter <= maxid) else 0
print('now this is weird: ' + str(idcter))
idcter=10000
idcter = idcter + 1 if(idcter <= maxid) else 0
print("that's better: " + str(idcter))
输出:
this is good: 10000
now this is weird: 10000
that's better: 0
所以这是一个简单的解决方法,但是为什么IDCTER在超过maxid
之后仍不重置?
答案 0 :(得分:8)
的运算符优先级
idcter += 1 if (idcter <= maxid) else 0
通过以下分组可视化
idcter += (1 if (idcter <= maxid) else 0)
这意味着如果条件不成立,您将增加 0
。
将其与
进行比较idcter = idcter + 1 if (idcter <= maxid) else 0
# ==
idcter = (idcter + 1) if (idcter <= maxid) else 0
在同一情况下您分配 0
的地方。
顺便说一句,10000
已超过您maxid
的{{1}}。实现这种复位增量的一种典型方法是使用模运算符。就您而言:
9999