nma*_*mat 3 python variables numbers
我正在寻找一种优雅的方法来确保给定变量保持正值.
我有两个变量保持正浮点数,我根据某些条件递减它们.最后,我想保证我仍然有正数(或最多0).伪代码看起来像这样:
list = [...]
value1 = N
value2 = M
for element in list:
if ... :
value1 -= X
if ... :
value2 -= Y
Run Code Online (Sandbox Code Playgroud)
有没有比ifs在最后添加两个更优雅的解决方案?
Kat*_*iel 23
我不清楚你想做什么 - 变量可能是负面的,或者它们不能.
如果你反复递减一个变量并且在这样做之后你想要检查它们是否是负数,那么就这样做if- 这就是它的用途!
if value < 0: # do stuff
Run Code Online (Sandbox Code Playgroud)如果您认为变量永远不应该是负数,并且您希望在代码中的代码中断言这一事实,那么您可以这样做
assert value > 0
Run Code Online (Sandbox Code Playgroud)
AssertionError如果条件不成立,则可能引发(assert当Python未在调试模式下运行时不会执行).
如果你想要变量为0,如果它已经减少到0以下,那么
value = max(value, 0)
Run Code Online (Sandbox Code Playgroud)如果你想要变量被否定,如果它是负数,那么就做
value = value if value > 0 else -value
Run Code Online (Sandbox Code Playgroud)
要么
value = abs(value)
Run Code Online (Sandbox Code Playgroud)对于花车,我喜欢max(0, value)Constantinius 已经给出的。您甚至可以将它与减量结合起来,并使用元组解包一次处理两个值:
value1, value2 = max(0, value1-1), max(0, value2-1)
Run Code Online (Sandbox Code Playgroud)
仅适用于整数的一些技巧(为了记录,因为我已经发布了它们而没有意识到您正在处理浮点数):
递减时,您可以使用:
value -= value and 1
Run Code Online (Sandbox Code Playgroud)
假设该值总是从 >= 0 开始,这不会让它低于 0。
当该值为零时,计算结果为value -= 0。当 value 不为零时,它的计算结果为value -= 1。
您还可以使用更具可读性的三元运算符:
value -= 1 if value > 0 else 0
Run Code Online (Sandbox Code Playgroud)