需求说明 公司的 ui 设计小哥,已经转用 zeplin 很久了。zeplin 的设计稿展示页面的颜色色值使用十进制的 rgb 表示的,在 android 中的颜色表示大多情况下都需要十六进制的 rgb 表示。我的数学没有好到直接看到十进制就可以心算得到十六进制的结果,所以我需要一个工具,输入十进制的 rgb ,得到十六进制的色值,最好可以方便复制。python代码
#!/usr/bin/python
#coding=utf-8
raw_input(“\n\n等输入”)
在终端执行 python input.py 后, 可以输入文字。 我需要接受到用户输入的信息。怎么接收忘记了, google 之,得到结果,顺便改改输入提示语,打印出输入的内容:python代码
input = raw_input(“\n输入颜色 比如50 144 60:\n”)
print(input)
2. 需要分割字符 查询到python 字符分割函数 split(),默认不传入参数就可以用空白符分割。原本还说用英文逗号(,)作为分隔符,现在看来可以省了,直接用空格分割,无论多少空格都可以自动分割。于是加上代码:python代码
rgbcolorarray = input.split()
print(rgbcolorarray)
3. 需要遍历数组 简单的遍历数组的是怎么弄的也忘记了,同样搜索:python代码
for x in rgbcolorarray: print(x)
4. 字符转成十六进制 这个时候拿到了字符串,要变成十六进制的字符串。这个时候需要两个函数, int() 和 hex(),int 函数可以将字符串转成 int 类型,而 hex 则接受数字参数,返回字符串。 0x开始的字符串。 于是就有了版的。于是就有了第一个版本。 第一个版本python代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print ‘%d 等于 %d * %d’ % (num,i,j)
break # 跳出当前循环
else: # 循环的 else 部分
print num, ‘是一个质数’
变量声明 由于需要不换行,所以就需要字符连接,而不是直接 print。 声明变量又遇到问题了。根据前面的变量使用情况,找了些 python 代码看了看,大概知道不用声明什么类型,直接用就好了。于是有了代码:python代码
output = “#”
for x in rgbcolorarray:
intx = int(x)
output = output + hex(intx)
print(output)
字符串裁剪和拼接 需要把多余的0x 两位去掉。 用到字符串裁剪,依然寻找范例。python代码
#!/usr/bin/python
var1 = ‘hello world!’
var2 = “python runoob”
print “var1[0]: “, var1[0]
print “var2[1:5]: “, var2[1:5]
这个范例的执行结果:python代码
var1[0]: h
var2[1:5]: ytho
顺便问了旁边也在学习 python 的同事,他告诉我后面的索引可以省略,代表直接裁剪到结尾。 比如上面的例子如果 print “var2[1:]”, var2[1:] 得到的结果应该是 ython runoob 所以有代码:python代码
output = “#”
for x in rgbcolorarray:
intx = int(x)
output = output + hex(intx)[2:]
print(output)
也可以从后往前数,比如还是上面的范例可以写成。比如上面的例子如果 print “var2[-1:]”, var2[-1:] 得到的结果应该是 ob 也就是字符串的后两位。 于是我们这里可以写成hex(intx)[-2:] (因为输出字符串类似是0x23, 这样的)就是这个导致我后面写了个 bug,我也文章最后说明这个 bug 是什么。 if else 判断 接着要做一个判断,给一位的补上0python代码
if intx < 16: output = output + '0' + hex(intx)[-2:] else: output = output + hex(intx)[-2:]
这样就有了python 文件:python代码
#!/usr/bin/python
#coding=utf-8
input = raw_input(“\n输入颜色 比如50 144 60:\n”)
#print(input)
rgbcolorarray = input.split()
print(rgbcolorarray)
output = “#”
for x in rgbcolorarray:
intx = int(x)
if intx < 16:
output = output + '0' + hex(intx)[-2:]
else:
output = output + hex(intx)[-2:]
#print(hex(int(x)))
print(output)
还有最后一步:把 coloru 加入到环境变量中 这个时候我可以得到我要的记过了,但是有点不太方便,我需要到这个 python 文件所在的目录下写python代码
python coloru.py
或者写全 coloru.py 这个路径。都是很麻的事情,所以我需要把 coloru 加入环境变量中。我用的是 zsh,所以找到环境变量的配置文件:~/.zshrc,末尾加上配置:python代码
alias coloru=”python ~/documents/development/pythonstudy/coloru.py”
这个是经过另外以为同事指导后的最后可行版本,我最初的思路是把 coloru.py 文件设置成可执行文件,然后加入到 path 当中。结果我把 coloru.py 这个文件的地址加入到了 path 中,世界上path 应该是一个目录。这样添加别名的方式更方便。也就是说如果我装客户端就可以不用我写的这个脚本了。但没关系我学习了 python,写了我自己的第一个真正有用的 python 代码。 2. 一个bug:我是在写这篇文章的时候才发现这个 bug 的,类似0x33这样的字符串从后往前裁剪的时候写[-2:],当然没有问题,但是写0xf 这样的字符串就会有问题了。程序输入 5 5 5得到的结果是 #0x50x50x5。修改成[2:] 的裁剪就可以了。
–>
以上就是使用python实现一个颜色色值转换的小工具介绍的详细内容,更多请关注 第一php社区 其它相关文章!