Verificar colores,nombre en listas (Python)

Iniciado por SlayerBur, 13 Junio 2021, 15:35 PM

0 Miembros y 1 Visitante están viendo este tema.

SlayerBur

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.

    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:

    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

tincopasan

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?

SlayerBur

Cita de: 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?

¿eso es un programa?

mas que un programa es un juego.
images seria esto, una lista.
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

tincopasan

¿es un chiste? Te ayudaría, pero ¿tenés idea que estás haciendo?
para :

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


usamos :
Código (python) [Seleccionar]
for i in range(3):

y te ahorras una lista

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


la corté por una cuestion de espacio

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

y:

f
Código (python) [Seleccionar]
or imagen in images:

     if (imagen.color == color[i]) and (imagen.name == pos):


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

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


WHK

#4
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 (python) [Seleccionar]

linea1 = [(0,0,0),(255,0,0),(0,0,255),(0,0,255)]
count = {}
for i in linea1:
   if(not str(i) in count.keys()):
       count[str(i)] = 0
   count[str(i)] += 1

print(count)


Debería quedar algo así:

Código (python) [Seleccionar]

{
    '(0,0,0)': 1,
    '(255,0,0)': 1,
    '(0,0,255)': 2
}




Saludos.