# Custom RGB to Hex Conversion With Python

## The challenge

The rgb function is incomplete. Complete it so that passing in RGB decimal values will result in a hexadecimal representation being returned. Valid decimal values for RGB are 0 – 255. Any values that fall out of that range must be rounded to the closest valid value.

Note: Your answer should always be 6 characters long, the shorthand with 3 will not work here.

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
``````

## Test cases

``````test.assert_equals(rgb(0,0,0),"000000", "testing zero values")
test.assert_equals(rgb(1,2,3),"010203", "testing near zero values")
test.assert_equals(rgb(255,255,255), "FFFFFF", "testing max values")
test.assert_equals(rgb(254,253,252), "FEFDFC", "testing near max values")
test.assert_equals(rgb(-20,275,125), "00FF7D", "testing out of range values")
``````

## The solution using Python

``````def rgb(r, g, b):

# helper function
def help(c):
if c<0: return 0
if c>255: return 255
return c

# make sure that values are within bounds
r = help(r)
g = help(g)
b = help(b)

# convert to hex
# maintain 2 spaces each
val = "%02x%02x%02x" % (r, g, b)

# return UpperCase string
return val.upper()
``````