除非语句的Python语法

除非语句的Python语法,python,Python,我的要求很简单,但我不知道如何继续: 我想在python中翻译一个除非语句,如下所示: taken_asks -= 1 unless taken_asks == 0 这只是一行代码,它是一个非常大的函数的一部分。 有什么想法吗 提前谢谢你 taked\u ask-=(如果taked\u ask,则为1!=0,否则为0)稍微短一点 taked_asks-=(taked_asks!=0) #(take_asks!=0)是一个布尔值,Python中的布尔值是int。 #True为1,False为0

我的要求很简单,但我不知道如何继续:

我想在python中翻译一个除非语句,如下所示:

taken_asks -= 1 unless taken_asks == 0
这只是一行代码,它是一个非常大的函数的一部分。 有什么想法吗

提前谢谢你

taked\u ask-=(如果taked\u ask,则为1!=0,否则为0)
稍微短一点

taked_asks-=(taked_asks!=0)
#(take_asks!=0)是一个布尔值,Python中的布尔值是int。
#True为1,False为0

taked_asks=max(taked_asks-1,0)

使用三元条件:

taken_asks = 0    
taken_asks -= 1 if taken_asks else 0    
print(taken_asks)   # 0

对我来说,最明显的解决方案是将
除非
转换为
如果不
,在这种情况下:

if not taken_asks == 0:
    taken_asks -= 1
可以用一行的形式写

if not taken_asks == 0: taken_asks -= 1

还有其他方法,但如果你需要可读性,我认为这是很难做到的。

迟来的答案,但最简单的版本可能是:

taken_asks -= bool(taken_asks)


说明

Boolean
类型变量继承自
int
,可用于算术运算,即:

  • bool(<1)
    返回
    None/False
    int(0)
  • bool(>0)
    返回
    True
    int(1)

  • 如果被拿走了\u询问!=0:taked_asks-=1
    ?@Nenri除非某件事要做多次,否则这是没有意义的。@Nenri,不,因为我只想修改
    taked_asks
    一次,while循环会做很多次这应该行得通:
    taked_asks-=1如果taked_还有其他问题0
    taked_asks-=bool(taked_asks)
    这个方法有效:
    taked\u asks-=taked\u asks!=0
    (不需要括号)注意:如果您在代码中使用此选项,您将在下一次代码检查中面临死亡的危险。为什么?这取决于你是否能读懂。举个例子,我绝对没有问题。但这可能是因为我经常使用ternaries和one-liner,我会发现如果执行任务,它的可读性会更高0:,但从长远来看,这仍然是最明智的解决方案。没有注意到,删除了,发布了新版本。