es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo recorrer una lista de variables dentro de un bucle? – Python

Estoy trabajando en un proyecto que resuelve sudokus. Para recopilar los valores de entrada, estoy utilizando una interfaz gráfica llamada “Tkinter” con 81 cajas de entrada por separado. También tengo un botón de enviar. Cuando presiono enviar, me gustaría crear una serie de objetos que contengan atributos como el valor de la celda, la fila y la columna. El código a continuación hace esto, pero tendría que copiar y pegar este código 81 veces ajustando solo los nombres de variables y la posición en uno cada vez (dentro de la función enviar). ¿Existe alguna manera de crear un bucle que pueda iterar estas líneas de código 81 veces mientras se altera la parte numérica de los nombres de variable?

class Celda:
    def __init__(self, numero, ubicacion):
        self.numero = numero
        self.fila = (ubicacion // 9) + 1
        self.columna = (ubicacion % 9) + 1

def enviar():
    celda1 = Celda(c1.get(), 0)
    celda2 = Celda(c2.get(), 1)
    celda3 = Celda(c3.get(), 2)
    ...

*El método .get() es cómo estoy obteniendo los números de las cajas de entrada (llamadas c1, c2, c3…) una vez que se presiona el botón.

**La ubicación es solo un número (0-80) que uso para encontrar la información de fila y columna.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar un bucle for para iterar sobre las 81 casillas de entrada y crear los objetos de celda con nombres de variable dinámicos utilizando la función exec(). Aquí tienes un bloque de código de ejemplo que podrías utilizar:

    def submit():
        for i in range(81):
            cell_name = "cell" + str(i+1)
            box_value = int(entries[i].get())
            exec(f"{cell_name} = Cell({box_value}, {i})")
    

    En este código, utilizamos un bucle for para iterar sobre los índices de las casillas de entrada. Creamos un nombre de variable dinámico, “cellX”, utilizando el índice actual, y obtenemos el valor de la casilla de entrada utilizando el método “.get()”. Luego utilizamos la función exec() para crear dinámicamente una nueva instancia de la clase Cell con el valor obtenido y el índice actual como entradas.

    Ten en cuenta que el uso de nombres de variable dinámicos con exec() puede ser arriesgado y potencialmente generar vulnerabilidades de seguridad en tu código, así que ten precaución al implementar esta solución.

Comments are closed.