python种颜色循环_如何用Python做一个RGB和16进制的互转工具

#完整代码

def rgb_to_hex(): #定义一个RGB颜色转16进制的函数

while True: #无限循环

try: #尝试获取RGB值的输入

r = int(input('请输入RGB中R的数值:'))

g = int(input('请输入RGB中G的数值:'))

b = int(input('请输入RGB中B的数值:'))

if r < 0 or r > 255 or g < 0 or g > 255 or b < 0 or b > 255: #如果RGB的值不在0-255之间,就打印一条提示语

print('RGB请输入0-255之间的整数!\n') #提示语

else: #RGB的值在0-255之间就终止循环

break

except ValueError: #如果引发了类型错误也会打印一条提示语

print('RGB请输入0-255之间的整数!\n')

hex_r = hex(r)[2:].upper() #10进制转16进制,并去掉16进制前面的“0x”,再把得出的结果转为大写

hex_g = hex(g)[2:].upper()

hex_b = hex(b)[2:].upper()

hex_r0 = hex_r.zfill(2) #位数不足2位时补“0”

hex_g0 = hex_g.zfill(2)

hex_b0 = hex_b.zfill(2)

print('16进制:#' + hex_r0 + hex_g0 + hex_b0) #打印最终结果(格式如“#ff0402”)

def hex_to_rgb(): #再定义一个16进制转RGB颜色的函数

while True: #无限循环

hex_color = str(input('请输入16进制颜色:')) #获取16进制颜色的输入

if hex_color[0] != '#' or len(hex_color) != 7: #如果16进制颜色前面没有“#”或16进制字符串的长度不为7,就打印一条提示语

print('请输入标准的16进制颜色,以“#”开头,字符长度为7!\n')

else: #如果16进制颜色符合标准

try: #尝试进行16进制转10进制

r = int('0x' + hex_color[1:3],16) #16进制颜色格式如“#ff0402”,提取出其中的“ff”、“04”、“02”三个16进制数字,并在前面加上“0x”,表示16进制

g = int('0x' + hex_color[3:5],16)

b = int('0x' + hex_color[5:7],16)

break #转换完成就退出循环

except ValueError: #引发了类型错误就打印提示语

print('请输入标准的16进制颜色,以“#”开头,字符长度为7!\n')

print('RGB值:' + str(r) + ',' + str(g) + ',' + str(b)) #打印出RGB值,用“,”分开

while True: #无限循环

user_in = str(input('请输入你要怎样转换:输入“1”是RGB转16进制,输入“2”是16进制转RGB:')) #提示用户输入“1”或“2”

if user_in == '1': #如果用户输入“1”就运行RGB转16进制的函数

rgb_to_hex()

break #终止循环

elif user_in == '2': #如果用户输入“2”就运行16进制转RGB的函数

hex_to_rgb()

break

else: #如果输入其他的内容,就打印一条提示语

print('只能输入“1”或“2”!\n')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值