返回零数组在Python
问题描述:
我解决它输入的二进制数和输出数组的一个问题应该是这样返回零数组在Python
[“白”,“红”]
它返回数组颜色。
现在我总共有两个问题。 1.在for rgb_code in hexcodes_array:
,它应该迭代两次,因为我输入两个数字,但它只是现在迭代最后一个项目。
-
for rgb_code in hexcodes_array:
刚刚返回一个nil数组,现在我检查它是从if语句返回一个值。
我的代码如下图所示:
def extract_number(number):
number_in_string = str(number)
red = number_in_string[:8]
green = number_in_string[8:16]
blue = number_in_string[16:24]
return [int(red, 2), int(green, 2), int(blue, 2)]
def ambiguity_identifier(number, array):
for item in array:
count = 0
if item == number:
count = count + 1
return count
def ClosestColor(hexcodes):
array = []
for item in hexcodes:
hexcodes_array = []
hexcodes_array.append(extract_number(item))
for rgb_code in hexcodes_array:
print(rgb_code)
distance_black = ((rgb_code[0] - 0)**2 + (rgb_code[1] - 0)**2 + (rgb_code[2] - 0)**2)
distance_white = ((rgb_code[0] - 255)**2 + (rgb_code[1] - 255)**2 + (rgb_code[2] - 255)**2)
distance_red = ((rgb_code[0] - 255)**2 + (rgb_code[1] - 0)**2 + (rgb_code[2] - 0)**2)
distance_green = ((rgb_code[0] - 0)**2 + (rgb_code[1] - 255)**2 + (rgb_code[2] - 0)**2)
distance_blue = ((rgb_code[0] - 0)**2 + (rgb_code[1] - 0)**2 + (rgb_code[2] - 255)**2)
distance_array = [distance_black, distance_blue, distance_green, distance_red, distance_white]
lowest_number = min(distance_array)
if ambiguity_identifier(lowest_number, distance_array) > 1:
array.append("Ambiguous")
elif distance_black == lowest_number:
array.append("Black")
elif distance_white == lowest_number:
array.append("White")
elif distance_red == lowest_number:
array.append("Red")
elif distance_green == lowest_number:
array.append("Green")
elif distance_blue == lowest_number:
array.append("Blue")
return array
if __name__ == '__main__':
ClosestColor([101111010110011011100100, 110000010101011111101111])
我能对这个有何意见? 感谢
答
好吧,你只得到你的数组中的最后一个项目的原因很清楚:
for item in hexcodes:
hexcodes_array = []
hexcodes_array.append(extract_number(item))
您重置hexcodes_array
到循环内的空单。因此,当循环退出时唯一离开的将是最后一个。
为了避免这种情况,不要这样做。
'对于以十六进制编码的项目:'该循环很奇怪 – njzk2
另外,只需一步一步地运行,您将很快看到为什么您的函数只能返回1个项目 – njzk2
您每次都在循环中重置您的'hexcodes_array'。此外,您将颜色表示为仅包含0或1的十进制数字是_extremely_奇怪;为什么不只是作为二进制文字('0b101 ...'),二进制字符串''101'或正常的十六进制颜色('#ff0000')? – nneonneo