Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: SlayerBur en 13 Junio 2021, 15:35 pm



Título: Verificar colores,nombre en listas (Python)
Publicado por: SlayerBur en 13 Junio 2021, 15:35 pm
Buen dia.

Tengo un problema a la hora de crear un bucle for para comprobar si el color es igual al nombre en una lista.

Código:
    for i in linea1:
        for imagen in images:
            for pos in lugar[i]:
                if (imagen.color == color[i]) and (imagen.name == pos):
                    linea2.append(imagen.name)
                    #print(imagen.name)

varables:
Código:
    lugar = [("a1","a2","a3","a4","a5"),("b1","b2","b3","b4","b5"),("c1","c2","c3","c4","c5")]
    linea1 = [(0),(1),(2)]
color = [(255,0,0), (0,255,0), (0,0,255), (255,255,0), (255,0,255), (0,255,255), (150,150,0)]

lo que quiero lograr es contar y agregar en en una lista la cantidad de colores por linea,
2 verde, 3 rojo / 3 verde, 2 rojo

https://imgur.com/a/gYMu6UT
asi se veria en el programa

y lo unico que logro obtener es color por linea, ej: rojo 3 / verde 3 / azul 1

espero que se entienda, y gracias de antemano


Título: Re: Verificar colores,nombre en listas (Python)
Publicado por: tincopasan en 13 Junio 2021, 20:11 pm
tal como está no hay forma de adivinar nada.
¿qué es images?¿querés contar los colores directamente de la imagen?

Citar
https://imgur.com/a/gYMu6UT
asi se veria en el programa

¿eso es un programa?


Título: Re: Verificar colores,nombre en listas (Python)
Publicado por: SlayerBur en 13 Junio 2021, 21:03 pm
tal como está no hay forma de adivinar nada.
¿qué es images?¿querés contar los colores directamente de la imagen?

¿eso es un programa?

mas que un programa es un juego.
images seria esto, una lista.
Código:
 images = [celda(xCelda,yCelda,"a1"), celda(xCelda+separacion,yCelda,"a2"), celda(xCelda+separacion*2,yCelda,"a3"), celda(xCelda+separacion*3,yCelda,"a4"), celda(xCelda+separacion*4,yCelda,"a5"), # Fila 1
        celda(xCelda,yCelda+separacionY,"b1"),celda(xCelda+separacion,yCelda+separacionY,"b2"),celda(xCelda+separacion*2,yCelda+separacionY,"b3"),celda(xCelda+separacion*3,yCelda+separacionY,"b4"),celda(xCelda+separacion*4,yCelda+separacionY,"b5"), # Fila 2
        celda(xCelda,yCelda+separacionY*2,"c1"),celda(xCelda+separacion,yCelda+separacionY*2,"c2"),celda(xCelda+separacion*2,yCelda+separacionY*2,"c3"),celda(xCelda+separacion*3,yCelda+separacionY*2,"c4"),celda(xCelda+separacion*4,yCelda+separacionY*2,"c5"),] # Fila 3

solo quero contar cuantos colores se repiten en cada linea


Título: Re: Verificar colores,nombre en listas (Python)
Publicado por: tincopasan en 14 Junio 2021, 00:16 am
¿es un chiste? Te ayudaría, pero ¿tenés idea que estás haciendo?
para :

Código
  1. linea1 = [(0),(1),(2)]
  2. for i in linea1:
  3.  

usamos :
Código
  1. for i in range(3):

y te ahorras una lista

esto:
i
Código
  1. mages = [celda(xCelda,yCelda,"a1"), celda(xCelda+separacion,yCelda,"a2")]
  2.  

la corté por una cuestion de espacio

¿dónde está declarada celda,xCelda,yCelda, separaqción, Y?

y:

 f
Código
  1. or imagen in images:
  2.  
  3.     if (imagen.color == color[i]) and (imagen.name == pos):
  4.  

¿de dónde salen los atributos color y name?

con lo que ponés no hay forma de hacer nada.



Título: Re: Verificar colores,nombre en listas (Python)
Publicado por: WHK en 20 Junio 2021, 06:33 am
Hola, puedes hacer un foreach a cada celda de cada linea y parsear el objeto del color, por ejemplo "str(i)", eso te generará un string con la representación del objeto del color, ahora haces un diccionario y lo usas como llave y los vas contando, por ejemplo:

Código
  1. linea1 = [(0,0,0),(255,0,0),(0,0,255),(0,0,255)]
  2. count = {}
  3. for i in linea1:
  4.    if(not str(i) in count.keys()):
  5.        count[str(i)] = 0
  6.    count[str(i)] += 1
  7.  
  8. print(count)
  9.  

Debería quedar algo así:

Código
  1. {
  2.    '(0,0,0)': 1,
  3.    '(255,0,0)': 1,
  4.    '(0,0,255)': 2
  5. }
  6.  



Saludos.