2017-04-26 137 views
1

我有一個簡單的麻煩,但我不知道如何解決它。max()和min()python

這是我的代碼,到目前爲止:

class CorRGB: 

    def __init__(self, red, green, blue): 
     self.r = min(1.0,red); 
     self.g = min(1.0,green); 
     self.b = min(1.0,blue); 


    def __repr__(self): 
     return str(self.r*255) + str(" ") + str(self.g) + str(" ") + str(self.b) 


c1 = CorRGB(10.0, -4.0, 0.1) 
print(str(c1)) 

所以,如果R,G,B值大於1.0,它必須返回1.0。如果r,g,b值低於0.0,則必須返回0.0。我必須使用min()max()函數,但我一次只能使用一個函數,我需要將它們用於相同的參數。

+2

...'min(1.0,max(color,0.0))'? –

+0

謝謝!!!我覺得很笨xD – Guilhermeffable

+0

爲什麼你必須使用min()和max()?不能你只是使用內聯if語句像'self.red =紅色如果0 <紅<1.0 else 1.0' – DSLima90

回答

1

在這種情況下,一個常見的成語是其他的參數傳遞一個函數的結果:

self.r = min(max(red, 0.0), 1.0) 

這大致相當於像

temp = max(red, 0.0) 
self.r = min(temp, 1.0) 

沒關係在這種情況下,你要求什麼命令maxmin。所以下面也可以正常工作:

self.r = max(min(red, 1.0), 0.0)