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