Python关于十进制值转十六进制的题

Python关于十进制值转十六进制的题

rgb 功能不完整。完成它,以便传入 RGB 十进制值将导致返回十六进制表示。
RGB 的有效十进制值为 0 - 255。
任何超出该范围的值都必须四舍五入为最接近的有效值。
注意:您的答案应始终为 6 个字符长,3 的速记在这里不起作用
以下是预期输出值的示例:
rgb(255, 255, 255) # returns FFFFFF
rgb(255, 255, 300) # returns FFFFFF
rgb(0,0,0) # returns 000000
rgb(148, 0, 211) # returns 9400D3

#自己写了一个,但是有一点问题,请在此基础上改一下

#或者更好的解决办法也行

def rgb(r, g, b):

rr = str(hex(r))[2:].upper()

gg = str(hex(g))[2:].upper()

bb = str(hex(b))[2:].upper()

for i in [rr,gg,bb]:

if '0' in i:

try:

if int(i):

return '{:02}{:02}{:02}'.format(int(rr),int(gg),int(bb))

except:

return '{}{}{}'.format(rr,gg,bb)

else:

return '{}{}{}'.format(rr, gg, bb)


回答:

def rgb(r,g,b):

#一些判断和数学代码,确保参数都是整数

l=[min(max(x,0),255) for x in [r,g,b]]

return "".join(["{:0>2X}".format(x) for x in l])


回答:

你明显没有处理值超出范围,和不为整数的情况啊。

def is_number(s):

try:

float(s)

return True

except ValueError:

pass

try:

import unicodedata

unicodedata.numeric(s)

return True

except (TypeError, ValueError):

pass

return False

def n2h(x):

# 如果能确定输入肯定是有效数值,则下面的2句容错处理可以不要,相应的函数定义也可以不要。

if( not is_number(x) ):

x=0

x=round(x)

x=min( max(x,0) , 255)

return "{:0>2X}".format(x)

def rgb(r, g, b):

return (n2h(r)+n2h(g)+n2h(b))

以上是 Python关于十进制值转十六进制的题 的全部内容, 来源链接: utcz.com/p/938023.html

回到顶部