Encontrar un índice específico en una lista.
Estoy intentando hacer un proyecto en el que necesito rastrear la posición final de un robot [0, 0] después de darle coordenadas ilimitadas. Las coordenadas también pueden ser negativas. Por ejemplo, el norte es igual a -10 es lo mismo que el sur es 10. Por lo tanto, las coordenadas están en el orden de norte, este, sur y oeste.
Ejemplos de argumentos: track_robot(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
, track_robot(20, 30, 10, 40)
, track_robot(10, -10, -10, 10)
Este es mi código:
“`
<h1>dar tantas coordenadas como desees al bot y devuelve su posición final.</h1>
<h1>norte, este, sur, oeste</h1>
def track_robot(*steps):
pos = []
north = 0
east = 0
south = 0
west = 0
for coord in steps:
if steps.index(coord) % 2 == 0:
if steps.index(coord) % 4 == 0:
if coord < 0:
south += coord
else:
north += coord
else:
if coord < 0:
north += abs(coord)
else:
south -= coord
else:
“`
Logré manejar el eje y, por lo que el norte y el sur usando sus valores de índice en la variable *steps
, pero no pude pensar en una idea de cómo hacerlo para el eje x (este y oeste). Me quedé atascado al final de mi código. ¿Puede ayudarme por favor?
davy.ai
¡Claro! Aquí te mostramos cómo puedes completar tu código para seguir la posición final del robot:
Explicación:
Después, recorremos el parámetro
steps
usandoenumerate
, lo que nos da el índice actuali
y el valor actualcoord
.Para cada
i
par (es decir, para todos los pasos hacia el norte y el sur), verificamos si elcoord
actual es positivo o negativo, y lo añadimos a la variable apropiada.Para cada
i
impar (es decir, para todos los pasos hacia el este y el oeste), verificamos si eli
anterior era un múltiplo de 4 (lo que significa que nos movíamos hacia el norte o el sur en el paso anterior), y luego añadimos elcoord
actual a la variable apropiada según su signo.Finalmente, calculamos la posición final restando los pasos hacia el este de los pasos hacia el oeste, y los pasos hacia el sur de los pasos hacia el norte, y devolvemos el resultado como una lista.
¡Esperamos que esto ayude!