是否可以缩短下面的if语句?
if r < 0: r = 0
elif r > 255: r = 255
if g < 0: g = 0
elif g > 255: g = 255
if b < 0: b = 0
elif b > 255: b = 255发布于 2020-04-27 22:11:03
这就是你所说的夹持。创建一个夹具函数,如下所示:
def clamp(n, smallest, largest):
return max(smallest, min(n, largest))现在您可以在变量上调用它,如下所示
r = clamp(r, 0, 255)发布于 2020-04-27 22:10:56
您可以使用min和max。
r = min(max(r, 0), 255)内部表达式确保r至少为0。外部表达式确保它不超过255。
发布于 2020-04-27 22:47:01
回答您关于缩短if语句代码的问题,您提供了一个替代的解决方案来获得与if语句相同的结果。
def rgb_8bit_trunc(r,g,b):
print("Input: r:{}, g:{}, b:{}".format(r,g,b))
r = 0 if r < 0 else r if r < 255 else 255
g = 0 if g < 0 else g if g < 255 else 255
b = 0 if b < 0 else b if b < 255 else 255
print("Output: r:{}, g:{}, b:{}".format(r,g,b))
rgb_8bit_trunc(256,256,256)
rgb_8bit_trunc(-1,-1,-1)每个三元条件运算符都等同于下面的if语句代码,其中'value‘可以是任何RGB变量。
if value < 255:
if value < 0:
value = 0
else:
value
else:
value = 255https://stackoverflow.com/questions/61460776
复制相似问题