我想做出一些錯誤捕獲的代碼。無論函數的輸入是什麼,它總是會執行第一個if
語句的else
塊。它爲什麼這樣做?如果語句執行Else,即使If似乎是真的?
這是錯誤醒目代碼:
def rgbtohex(r=0, g=0, b=0):
'''Converts RGB values to hecadeximal values. Supports 3 integers, one list, or one tuple.'''
if type(r) == 'int' and type(g) == 'int' and type(b) == 'int':
if r > 255 or g > 255 or b > 255:
raise ValueError('one or more arguments are above 255.')
elif type(r) == 'list' or type(r) == 'tuple':
if r[0] > 255 or r[1] > 255 or r[2] > 255:
raise ValueError('one or more index values are above 255.')
if g == 0 and b == 0:
r = r[0]
g = r[1]
b = r[2]
else:
raise TypeError('rgb values not integers, single list, or single tuple.')
return
else:
raise TypeError('one or more arguments are not integers.')
...
順便說一句,你可能要檢查整數值不小於0或者.... :) –