English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Veamos el ejemplo de visualización del valor de color en Zeplin
Manera de procesar original
Porque sé Python (sólo puedo usar python en la terminal como calculadora o usar la función hex() para convertir decimal a hexadecimal), por lo que cuando me enfrento a este problema, naturalmente uso la función hex() de python para hacer la conversión y luego ingresar los resultados manualmente a Android Studio.
Usar la función hex manualmente para convertir el valor
Motivo
La gente siempre es perezosa, ya hace mucho tiempo quiero escribir esta herramienta y también tuve algunas ideas:
Entrada: Un valor decimal similar al RGB (110for num in range( 122 138), dividido por espacio o coma.
Salida: Un valor de color RGB en hexadecimal (#6e7a8a).
Pero no me puse a trabajar, siempre estaba hablando. ¡Qué perezoso!
Comenzar
1. Primero necesito ingresar la función
Abrí la carpeta donde aprendí Python anteriormente y encontré un ejemplo de raw_input:
#!/usr/bin/python #coding=utf-8 raw_input("\n\nEsperando entrada")
Ejecutando python input.py en el terminal, se puede ingresar texto.
Necesito recibir la información de entrada del usuario. Olvidé cómo hacerlo, busqué en Google y obtuve los resultados, y también cambié el mensaje de entrada, imprimiendo el contenido de entrada:
input = raw_input("\nIntroduce el color por ejemplo50 144 60:\n") print(input)
2. Necesito dividir caracteres
He encontrado la función de división de caracteres de Python split(), que por defecto puede dividir por símbolos de espacio en blanco sin ingresar parámetros. Originalmente dije que usaría la coma (,) en inglés como separador, pero parece que puedo omitirlo, y dividir directamente por espacio en blanco, ya sea cuántos espacios, se dividirá automáticamente. Entonces, agrego el código:
rgbColorArray = input.split() print(rgbColorArray)
3. 需要遍历数组
. Necesita recorrer el array
Olvidé cómo hacer una recorrida simple del array, también busqué:
4for x in rgbColorArray: print(x)
Convertir una cadena a hexadecimal
En este momento, se obtuvo una cadena que se convierte en una cadena hexadecimal. En este momento, se necesitan dos funciones, int() y hex(), la función int() puede convertir una cadena en un tipo int, y hex() acepta un parámetro numérico y devuelve una cadena. La cadena comienza con 0x.
Por lo tanto, se obtuvo la primera versión.
Primera versión
Resultado de ejecución de la primera versión
Escribir esta versión básica ya puede obtener básicamente el resultado que quiero, la desventaja es que aún necesito hacerlo manualmente, usar la memoria del cerebro para recordar los valores hexadecimales y luego ingresarlos. Espero poder copiar el resultado final.
Avanzar un paso más
1Aunque el resultado ya está saliendo, uno aún espera poder mejorar un poco, hay algunos problemas:16、Cuando el número a convertir es menor que11 cuando solo se muestra un dígito, por ejemplo
2El resultado de visualización es 0xB
3、El resultado real tiene más 0x
、El resultado de visualización debe estar conectado para facilitar la copia, en lugar de que cada color esté en una línea.16Por lo tanto, se necesita recorrer el array de valores de color, quitar los caracteres 0x, y determinar si es menor que
Añadir 0 al principio. Salida continua de resultados.
Bucle for para recorrer el array
Anteriormente se utilizó el bucle for, que fue de un ejemplo encontrado, pero no sabía cómo hacerlo en multilinea. Java generalmente escribe mucho en corchetes { }.
#!/usr/bin/python Continuar buscando información, y saber que es más o menos el uso de la siguiente manera. -*- #-8 -*- coding: UTF10for num in range(2, 10 0): # Iterar 20 a for i in range(2,num): # Iterar según el factor if num%i == 0: # Determinar el primer factor j=num/i # Calcular el segundo factor print '%d es igual a %d * %d' % (num,i,j) break # Salir del ciclo actual else: # Parte else del ciclo print num, 'es un número primo'
Declaración de variables
Debido a que no se debe cambiar de línea, se necesita concatenar caracteres, en lugar de usar print directamente.
Se encontraron problemas en la declaración de variables. Según el uso anterior de las variables, se encontraron algunos códigos de python para revisar, y se sabía más o menos que no era necesario declarar un tipo, simplemente se podía usar.
Por lo tanto, se obtuvo el código:
output = "#" for x in rgbColorArray: intx = int(x) output = output + hex(intx) print(output)
Cortar y pegar cadenas.
Necesita quitar los 0x no deseados.
用到字符串裁剪,依然寻找范例。
#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Runoob" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5] 这个范例的执行结果: var1[0]: H var2[1:5
Además, pregunté a un colega que también estaba aprendiendo python, y me dijo que podía omitir el índice posterior, lo que significa que se corta directamente hasta el final.
Por ejemplo, si print "var2[1:]", var2[1:] El resultado debería ser ython Runoob
Por lo tanto, el código es:
output = "#" for x in rgbColorArray: intx = int(x) output = output + hex(intx)[2:] print(output)
También se puede contar desde el final, por ejemplo, en el ejemplo anterior se puede escribir.2[-1:]" , var2[-1:] El resultado debería ser ob, es decir, los dos últimos dígitos de la cadena.
Por lo tanto, podemos escribirlo aquí hex(intx)[-2:] (porque la cadena de salida es similar a 0x23, así) es lo que causó que escribiera un bug más tarde, también lo mencioné al final del artículo.
if else condiciones
Luego hay que hacer una condición, agregar 0 a los de un dígito
if intx < 16: output = output + '0' + hex(intx)[-2:] else: output = output + hex(intx)[-2:]
De esta manera, se tiene el archivo python:
#!/usr/bin/python #coding=utf-8 input = raw_input("\nIntroduce el color por ejemplo50 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)
Además, el último paso: agregar ColorU a las variables de entorno
En este momento puedo obtener lo que necesito, pero es un poco incómodo, necesito escribir en el directorio donde se encuentra el archivo python
python colorU.py
O escribe la ruta completa colorU.py. Son todas cosas complicadas, por lo que necesito agregar colorU a las variables de entorno. Estoy usando zsh, por lo que busco el archivo de configuración de las variables de entorno: ~/.zshrc, agregar la configuración al final:
alias colorU="python ~/Documentos/Desarrollo/PythonStudy/colorU.py"
Esta es la última versión viable después de la guía de otro colega, mi idea inicial fue configurar el archivo colorU.py como archivo ejecutable y agregarlo a Path. Resultó que agregué la dirección del archivo colorU.py a Path, y debería ser un directorio. Este método de agregar alias es más conveniente.
Posteriormente
Se dice que el cliente de Zeplin puede mostrar valores hexadecimales por defecto, y yo uso la versión web, por lo que no lo tengo. Es decir, siinstalo el cliente, podré no necesitar este script que escribí. Pero no importa, aprendí python y escribí mi primer código python realmente útil.
Un bug: descubrí este bug mientras escribía este artículo, similar a 0x33Esta cadena se corta de atrás hacia adelante cuando se escribe [-2]:, por supuesto, no hay problema, pero escribir una cadena como 0xf causará problemas. La entrada del programa 5 5 5El resultado es #0x50x50x5. Cambie a [2El recorte de [:] es suficiente.
bug causado por el recorte hacia atrás de la cadena
También puede continuar actualizando la experiencia:
a. Ingrese directamente colorU en la terminal 231 234 123 podrá obtener el resultado #e7ea7b;
b. Coordinado con Alfred, después de llamar a la ventana de Alfred, ingrese el valor de color, obtenga el resultado, presione Enter para copiar directamente el color hexadecimal al portapapeles.
c. Guarde los valores de color ya convertidos, que son fáciles de usar repetidamente, y copie directamente el color hexadecimal.
Resumen
Esto es todo el contenido de este artículo, espero que el contenido de este artículo pueda ayudar a todos a aprender o trabajar. Si tienen alguna pregunta, pueden dejar comentarios para intercambiar.
Declaración: El contenido de este artículo se ha obtenido de la red, pertenece a los derechos de autor del propietario, el contenido se ha contribuido y subido por los usuarios de Internet de manera autónoma, este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.)