Continuemos practicando los condicionales con un ejercicio más. Tenemos que escribir una función que reciba por parámetro tres puntos, es decir, parejas de coordenadas (x,y) de enteros, para un total de seis parámetros y no retorne ("True o False"), dependiendo de si los tres puntos están sobre una misma recta o no, en otras palabras, si son colineales. Antes de poder solucionar el problema, tenemos que entender qué son puntos colineales. Cuando tenemos tres puntos "A" de coordenadas (x1, y1), "B" de coordenadas (x2, y2) y "C" de coordenadas (x3, y3), estos están alineados, si los vectores formados por "AB" y "BC" tienen la misma dirección, cosa que ocurre cuando las pendientes de las rectas que forman dichos vectores son las mismas. En la imagen podemos ver que la pendiente de una recta formada por dos puntos, la calculamos restando las coordenadas "y" de los puntos y dividiendo esto entre la resta de las coordenadas "x" de los puntos. Previo a escribir el código, planteemos la estrategia de solución que seguiremos. Analizando el problema, podemos llegar a que tenemos primero que calcular la pendiente de las rectas que forman los puntos "A" y "B" y "B" con "C". Segundo, tenemos que comparar si dichas pendientes son iguales para que finalmente, en caso que sea así, retornar "True" o "False" si no son iguales. Pasemos ahora hacia Spyder para codificar nuestra solución. Tenemos entonces la definición de nuestra función: def son colineales, que recibe como parámetro a las seis coordenadas de nuestros tres puntos e indica que debemos retornar un boolean. Seguimos entonces con el cálculo de las pendientes. Nos queda: pendiente uno, que será igual "y" dos menos de "y" uno, esto dividido entre "x" dos menos "x" uno. Y de forma similar nos queda: pendiente dos, que será igual a "y" tres menos "y" dos, dividido entre "x" tres menos "x" dos. Ahora debemos comparar los resultados, if pendiente uno es igual, igual a pendiente dos, en cuyo caso retornamos "True". De no ser así, es decir, "else", retornamos "False". Con esto ya tendríamos nuestra solución, pero veamos otras maneras de trabajarlo. Podríamos también crear una variable que llamaré "respuesta" e inicializaré en "False", asumiendo que las pendientes no son iguales. Luego, con el condicional, evaluamos si son iguales y en ese caso asignamos "True" a la variable, nos queda respuesta igual a "True". Finalmente, tendríamos que retornar la variable, "return" respuesta y de esta manera quitamos el "else" y dejamos un único retorno. Otra forma, aún más corta, la podemos obtener notando que básicamente estamos retornando el mismo resultado, que da evaluar la expresión: pendiente uno igual igual a pendiente dos, ya que cuando la expresión da "True", retornamos "True", y en caso contrario "False". Así que podemos retornar directamente el resultado de la expresión poniendo: "return" pendiente uno igual igual a pendiente dos. De este modo nos podemos ahorrar los condicionales aprovechando la expresión que nos da el booleano que debemos retornar. Ahora solo nos resta comprobar que nuestra función es correcta, ejecutar el archivo y probaremos con algunos ejemplos. El primero será comprobar que efectivamente no retorna "True", cuando tenemos puntos que sabemos son colineales. En este caso lo probaremos con las coordenadas (menos cinco, tres); (menos uno, tres) y (uno, menos seis). En este caso, al ejecutarlo, vemos que efectivamente la función nos indica "True", es decir, que son colineales como lo esperábamos. Ahora lo probaré nuevamente, pero cambiemos alguno de los valores. Por ejemplo, cambiamos el menos seis por positivo. En este caso, ya nos debería decir que no son colineales. Si ejecutamos la función, vemos que efectivamente nos da "False", lo que indica que nuestra implementación es correcta.