除非语句的Python语法
我的要求很简单,但我不知道如何继续: 我想在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
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:,但从长远来看,这仍然是最明智的解决方案。没有注意到,删除了,发布了新版本。