2011-08-17 573 views
2

我有一個問題可能很簡單,或者可能無法回答,我不確定。我想知道如何在Python中定義顏色。在python中定義顏色

例如,我想簡單地做到這一點:

myColor = #920310 

然而,在Python用「#」符號自動評論任何以下。 有沒有辦法解決這個問題?謝謝你,對不起,如果如果你想把它當作一個字符串,這個問題很簡單

+0

你打算如何使用該變量? –

+0

顏色在什麼情況下?您定義顏色的方式可能取決於您打算如何使用它。 – multipleinterfaces

回答

8

,做

myColor = '#920310' 

如果你真的希望它是一個Color對象,你可以這樣做

myColor = Color('#920310') 

並解釋爲Color的構造函數。

如果問題是你可以讓#不被解釋爲一個評論,那麼答案是否定的。如果#不是註釋,它將不再是Python。

你可以定義你自己的類Python語言,#之後的=並不意味着評論(因爲它無論如何都不是有效的Python),它不會破壞任何代碼,但是你將無法在其他地方使用#語法而不破壞代碼。

+0

爲「不再是蟒蛇」的部分榮譽 –

+0

+ 1,你真的在​​這裏涵蓋了所有的基礎。 –

+0

新的語法部分是有趣的,但它不清楚他的意思,所以我幾乎不得不:) :) – agf

1
mycolor = '#<colorcodehere>' 

mycolor將被視爲一個字符串,所以頂點內一切都會被讀取(#太)

+1

非常感謝你! –

+1

請不要發表感謝評論,這是[upvoting](http://stackoverflow.com/privileges/vote-up)的用途。 – agf

2

根據您計劃如何使用的值,你有很多選擇:

colorString = "#920310" 
colorList = [0x93, 0x03, 0x10] 
colorTuple = (0x93, 0x03, 0x10) 
colorDict = { 
    "R" : 0x93, 
    "G" : 0x03, 
    "B" : 0x10, 
} 

或者,如果你打算有幾個操作來處​​理你的膚色,說轉換成不同的格式,你可以定義一個顏色等級:

class Color(object): 
    def __init__(self, r, g, b): 
     self._color = (r,g,b) 

    def get_tuple(self): 
     return self._color 

    def get_str(self): 
     return "#%02X%02X%02X" % self._color 

    def __str__(self): 
     return self.get_str() 

    def get_YUV(self): 
     # ... 

用法示例:

>>> a = Color(0x93, 0x03, 0xAA) # set using hex 
>>> print a 
#9303AA 
>>> b = Color(12, 123, 3) # set using int 
>>> print b 
#0C7B03 
+0

非常感謝! –

3
myColor = int('920310', 16) #as an integer (assuming an RGB color in hex) 

myColor = '#920310' #as a string 

from collections import namedtuple 
Color = namedtuple("Color", "R G B") 
myColor = Color(0x92, 0x03, 0x10) 
#as a namedtuple 

有很多的事情可以找,和同樣多的方式來使用它。最終,這取決於你想如何使用這種顏色。

+0

非常感謝你,將以簡單的字符串解決方案^^開始 –