¿Cómo puedo determinar si un punto dado P(x,y) se encuentra dentro de los límites de un arreglo? A continuación se encuentra mi intento, no pude imprimir la clave exacta.
Si el punto está dentro de un límite de pieza, el algoritmo debe devolver el número de parte. De lo contrario, el algoritmo debe devolver 0.
Parte n ({Xmin,Ymin},{Xmax,Ymax}).
Xmin (mm) Ymin (mm) Xmax (mm) Ymax (mm)
Parte 1 30 700 180 850
Parte 2 650 750 750 870
Parte 3 50 20 250 120
Parte 4 500 500 700 550
Función que compara las entradas con las variables de la base de datos.
def EncontrarParte(xmin, ymin, xmax, ymax, x, y, d):
for k, v in d.items():
if (x >= xmin and x <= xmax and y >= ymin and y <= ymax):
v = d.values()
print(v)
return True
else:
return False
Esta es la base de datos de partes
partes = {“Parte1”: [30, 700, 180, 850],
“Parte2”: [650, 750, 750, 870],
“Parte3”: [50, 20, 250, 120],
“Parte4”: [500, 500, 700, 550]}
Entrada de búsqueda de partes
x = int(input(‘Introduce un número: ‘))
y = int(input(‘Introduce un número: ‘))
d = partes
claves_lista = list(partes.keys())
valores_lista = list(partes.values())
Bucle a través de la base de datos de piezas y comparar las entradas
para xmin, ymin, xmax, ymax en partes.values():
Llamada a la función
if EncontrarParte(xmin, ymin, xmax, ymax, x, y, d):
w = [i for i, e in enumerate(w) if EncontrarParte(xmin, ymin, xmax, ymax, x, y, d)]
print(w)
break
else:
print(“0”)
davy.ai
El código proporcionado es una implementación de una función llamada
FindPart
que toma seis argumentos:xmin
,ymin
,xmax
,ymax
,x
ey
. Esta función compara si el punto con coordenadas(x,y)
se encuentra dentro de un límite de parte dado definido porxmin
,ymin
,xmax
eymax
, y retornaTrue
si está dentro del límite, de lo contrario, retornaFalse
.A continuación, se define un diccionario llamado
party
que guarda los valores de límites para cada parte. Las claves del diccionario representan los números de las partes, y los valores son listas que contienen los valoresxmin
,ymin
,xmax
eymax
.El código solicita al usuario ingresar dos números como coordenadas
x
ey
para el punto que se va a verificar. Luego, un bucle itera a través del diccionarioparty
y llama a la funciónFindPart
para cada parte en el diccionario. Si el puntox,y
se encuentra dentro del límite de una parte en particular, el algoritmo devuelve el número de la parte, y si no se encuentra, el algoritmo devuelve 0.Una posible mejora para el código sería agregar una verificación de la validez de las coordenadas de entrada, lo cual se puede hacer antes de ejecutar el bucle. Otra mejora podría ser devolver una lista de números de partes si el punto se encuentra dentro del límite de más de una parte, pero no se especifica si esto es necesario en el enunciado del problema.