python进阶练习题:数组和十六进制颜色代码【难度:2级】:
给定一个包含3个子数组的数组,每个子数组包含许多基于其主要字节值松散定义红色,绿色和蓝色的十六进制颜色代码,返回每个数组包含的三种颜色中哪一种的字符串描述.
输入是一个数组,它包含3个数组,每个数组的长度在3到10之间.每个数组都包含许多颜色代码,红色,绿色或蓝色字节占主导地位,因此被定义为红色,绿色或蓝色.基于此定义,每个数组矩阵包含恰好两种颜色的颜色代码 - 多数颜色,即除了一种颜色代码之外的所有颜色代码和剩余颜色代码.数组矩阵的多数颜色和少数颜色将永远不会相同,但数组矩阵之间可能有不同的组合(即
红色+ 蓝色,红色+ 蓝色,红色+ 蓝色
是有效组合).将会有没有无效的输入.
颜色代码将以形式为
RRGGBB
的十六进制值字符串给出.在这三个组件中,一个(“L`”)在
01-FF
范围内,另外两个在范围内从
00-(L-1)
.所以一个值总是大于其他两个值,因此整个颜色被定义为红色,绿色或蓝色.(这允许像
010000
和
FFFEFE
这样的颜色都是定义为红色,这在人类视觉方面是不现实的,但我已经离开了它,因为任务的目的更多是通过查看字节的数值和输入的受限范围之间的差异而不是它们来描述颜色实际上看起来像.)
输入中的所有字母字符都是大写的.
您的任务是确定每个数组矩阵的主要颜色和少数颜色.
返回形式为
majCol + minCol,majCol + minCol,majCol + minCol
的字符串,其中三个逗号分隔的对按顺序引用每个数组,
majCol
和
minCol
是颜色名称(红色,绿色,蓝色)大写.该字符串不应包含任何空格.
上述文本中的所有范围都包含在内.
输入:
colArr = [["FFA07A","FA8072","8DC4DE"],["7FFF00","ADFF2F","FF0000","00FF7F","00FF7F"],["ADD8E6","6B8E23" "9ACD32", "32CD32", "00FF00"]]
输出:
红+ 蓝,绿+ 红,绿+ 蓝
编程目标:
def get_colors(col_arr):
#your code here
测试样例:
Test.describe("Basic tests")
col_arr = [ [ "6B8E23", "9ACD32","2E8B57","00008B", "00FF00","6B8E23","00FA9A" ],
[ "CD5C5C", "8B0000", "FF0000", "F08080", "98FB98", "DC143C" ],
[ "00BFFF", "00008B", "B22222", "000080", "87CEEB", "4169E1" ] ]
Test.assert_equals(get_colors(col_arr),"Green+Blue,Red+Green,Blue+Red")
col_arr = [[ "FF0000", "191970", "FF0000" ],
[ "556B2F", "98FB98", "2E8B57", "00FF7F", "556B2F", "FFA07A" ],
[ "00BFFF", "00BFFF", "4169E1", "1E90FF", "F08080", "191970" ] ]
col_arr = [ [ "FF0000", "8DC4DE", "87CEFA", "4169E1", "0000FF" ],
[ "FF0000", "191970", "00008B" ],
[ "CD5C5C", "F08080", "0000FF" ] ]
Test.assert_equals(get_colors(col_arr),"Blue+Red,Blue+Red,Red+Blue")