首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩短python if-statement语法

缩短python if-statement语法
EN

Stack Overflow用户
提问于 2020-04-27 22:08:29
回答 3查看 47关注 0票数 1

是否可以缩短下面的if语句?

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-27 22:11:03

这就是你所说的夹持。创建一个夹具函数,如下所示:

代码语言:javascript
复制
def clamp(n, smallest, largest): 
    return max(smallest, min(n, largest))

现在您可以在变量上调用它,如下所示

代码语言:javascript
复制
r = clamp(r, 0, 255)
票数 1
EN

Stack Overflow用户

发布于 2020-04-27 22:10:56

您可以使用minmax

代码语言:javascript
复制
r = min(max(r, 0), 255)

内部表达式确保r至少为0。外部表达式确保它不超过255。

票数 0
EN

Stack Overflow用户

发布于 2020-04-27 22:47:01

回答您关于缩短if语句代码的问题,您提供了一个替代的解决方案来获得与if语句相同的结果。

代码语言:javascript
复制
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变量。

代码语言:javascript
复制
if value < 255:
    if value < 0:
        value = 0
    else:
        value
else:
    value = 255
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61460776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档