python颜色代码r. b._codewars(python)练习笔记十二:十进制颜色转十六进制

codewars(python)练习笔记十二:十进制颜色转十六进制

题目

The rgb() method is incomplete. Complete the method so that passing in RGB decimal values will result in a hexadecimal representation being returned. The valid decimal values for RGB are 0 - 255. Any (r,g,b) argument values that fall out of that range should be rounded to the closest valid value.

The following are examples of expected output values:

rgb(255, 255, 255) # returns FFFFFF

rgb(255, 255, 300) # returns FFFFFF

rgb(0,0,0) # returns 000000

rgb(148, 0, 211) # returns 9400D3

题目大意:计算颜色值,将0~255 转 16进制。超出范围的,应该四舍四入到最接近的有效值。

我的解法:

#!/usr/bin/python

def rgb(r, g, b):

temp = ''

for item in [r,g,b]:

if item < 0:

item = 0

elif item > 255:

item = 255

temp += str(hex(item)).replace('0x','').upper().zfill(2)

return temp

几种不同的进制转换,这一块的知识点我比较弱,就弄最简单的思路来写。

其他解法一:

def rgb(r, g, b):

round = lambda x: min(255, max(x, 0))

return ("{:02X}" * 3).format(round(r), round(g), round(b))

其他解法二:

def limit(num):

if num < 0:

return 0

if num > 255:

return 255

return num

def rgb(r, g, b):

return "{:02X}{:02X}{:02X}".format(limit(r), limit(g), limit(b))

其他解法三:

def rgb(r, g, b):

clamp = lambda x: max(0, min(x, 255))

return "%02X%02X%02X" % (clamp(r), clamp(g), clamp(b))

其他解法四:

def rgb(*args):

return ''.join(map(lambda x: '{:02X}'.format(min(max(0, x), 255)), args));

其他解法五:

def rgb(r, g, b):

clamp = lambda x: max(0, min(x, 255))

return "{:02X}{:02X}{:02X}".format(clamp(r), clamp(g), clamp(b))

其他解法六:

def rgb(r, g, b):

return ''.join(['%02X' % max(0, min(x, 255)) for x in [r, g, b]])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值