Я решить проблему, которая вводит массив двоичных чисел и вывод должен что-то вродеВозвращение всухую массива в Python
[ «Белый», «Red»]
Он возвращает массив цвет.
Сейчас у меня есть две проблемы. 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])
Могу ли я получить какие-либо советы по этому поводу? Благодаря
'для элемента в шестнадцатеричных кодах:' этот цикл тоже странный – njzk2
, просто запустите шаг за шагом, и вы быстро поймете, почему ваша функция может возвращать только 1 элемент. – njzk2
Каждый раз в цикле вы каждый раз меняете свой 'hexcodes_array'. Кроме того, ваше представление цветов в виде десятичных чисел, содержащих только 0 или 1, является _extremely_ странным; почему не только как бинарные литералы ('0b101 ...'), двоичные строки '' 101'' или как обычные шестнадцатеричные цвета ('# ff0000')? – nneonneo