2017-04-26 5 views
1

Ich habe ein einfaches Problem, aber ich weiß nicht, wie ich es lösen soll.max() und min() python

Dies ist mein Code, so weit:

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

Also, wenn die r, g, b sind Werte, die größer als 1,0 ist, hat es 1,0 zurückzukehren. Und wenn die r, g, b Werte kleiner als 0.0 sind, muss 0.0 zurückgegeben werden. Ich muss die min() und max() Funktionen verwenden, aber ich kann nur mit einer gleichzeitig arbeiten, ich muss sie beide für das gleiche Argument verwenden.

+2

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

+0

danke !!! Ich fühle mich so dumm xD – Guilhermeffable

+0

Warum müssen Sie min() und max() verwenden? Kannst du einfach eine Inline-if-Anweisung wie 'self.red = red wenn 0 DSLima90

Antwort

1

Ein gemeinsames Idiom in diesem Fall ist das Ergebnis einer Funktion als Argument des anderen weitergeben müssen:

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

Dies ist in etwa wie

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

Es spielt keine Rolle In welcher Reihenfolge rufen Sie in diesem Fall max und min an. Also würde folgendes auch gut funktionieren:

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