2016-09-16 12 views
2
def tohex(r, g, b): 
    #your code here :) 
    def hex1(decimal): 
     if decimal < 0: 
      return '00' 
     elif decimal > 255: 
      return 'FF' 
     elif decimal < 17: 
      return '0'+ hex(decimal)[2:] 
     else: 
      return inthex(decimal)[2:] 
    return (hex1(r) + hex1(g) + hex1(b)).upper() 
print rgb(16 ,159 ,-137) 

私は16進数を得るための新しい方法を定義します。しかし、(16,159、-137)になると、019F00の代わりにが得られます。余分なものがある理由接頭辞 `0x 'なしで16進数にする方法

+2

の可能性の重複(https://stackoverflow.com/questions/16414559/how-to-use-hex-without-0x-in-python) –

答えて

4

elif decimal < 16ではなく17なので、余分なゼロがあります。

使用フォーマット文字列:

def rgb(r,g,b): 
    def hex1(d): 
     return '{:02X}'.format(0 if d < 0 else 255 if d > 255 else d) 
    return hex1(r)+hex1(g)+hex1(b) 

print rgb(16,159,-137) 

出力:[?Pythonでの0xずに進()を使用する方法]

109F00 

https://docs.python.org/2.7/library/string.html#format-specification-mini-language

関連する問題