Ahora es el momento de un descanso del aprendizaje,
para que ahora podamos aplicar todo
hemos aprendido en esta sección hasta ahora
a nuestro primer desafío de codificación.
En este, vamos a empezar a construir
una aplicación de apuestas de fútbol.
Para mis amigos estadounidenses, eso se llama fútbol.
Digamos que obtenemos algunos datos
sobre un partido de fútbol en particular
desde un servicio web.
Así es como se verán esos datos.
Un objeto con esta información sobre el juego.
La fecha, quién anotó, la puntuación.
Una matriz de dos matrices con todos los jugadores.
Y puedes obtener estos datos por ti mismo
ya sea del archivo PDF del Desafío
eso es al principio del curso
o del código final de esta sección
que está disponible en el repositorio de código de gitup
que descargó para este curso.
¿Bueno?
En este reto vamos a trabajar con esos datos.
Aquí están sus siete tareas.
Confía en mí, la mayoría de ellos solo toman
un minuto para completar.
De todos modos, crea una matriz de jugadores
para cada uno de los equipos
y llámalos 'jugadores1' y 'jugadores2'.
En cada una de las matrices,
suponemos que el primer jugador
en la matriz esta el portero
y los otros diez jugadores
son los jugadores de campo.
Para el equipo número 1, que es el Bayern de Múnich,
crea una variable llamada 'gk' para el portero
y luego una matriz llamada 'fieldPlayers'
con los 10 jugadores restantes.
A continuación, cree una matriz llamada 'allPlayers',
que va a contener a todos los jugadores
de los dos equipos.
A continuación, dice que el Bayern de Múnich
usó tres jugadores suplentes.
Ese es el equipo 1.
Quiero que crees una nueva matriz,
este de aquí,
que contiene todos los jugadores originales,
más 'Thiago', 'Coutinho' y 'Perisic'.
A continuación, toma el objeto 'game.odds'
y luego crea una variable para cada una de las probabilidades
y llámelos 'equipo1', 'dibujar' y 'equipo2'.
¿Está bien?
A continuación, escriba esta función 'printgoals',
que debe recibir un número arbitrario
de nombres de jugadores.
Así que no es una matriz.
Y luego la función imprime
cada uno de los jugadores a la consola
y tambien cadena con el numero de goles
que se puntuaron en total.
Así que fueron anotados.
Digamos aquí en total.
Por ejemplo aquí,
Serian cuatro goles
porque tenemos cuatro jugadores.
Para este número 6, use los jugadores
'Davies', 'Muller', 'Lewandowski' y 'Kimmich'.
Primero, llame a la función con estos cuatro
y luego después de eso,
también llame a la función con
los jugadores que están en el juego.puntuaron.
Esos son los jugadores aquí que les acabo de mostrar,
estos cuatro
Finalmente, asumimos que el equipo
con las probabilidades más bajas es más probable que gane.
Así que ahora, su tarea es imprimir en la consola
qué equipo es más probable que gane,
pero sin usar una sentencia if/else
o el operador ternario.
Esto puede parecer mucho trabajo,
pero en realidad no es tan difícil, creo.
Por favor, trate de hacer al menos algunos de ellos.
Incluso si no eres capaz de
tal vez terminar uno de estos dos últimos,
es, como siempre, bueno que al menos lo intentes.
Tomar 15 minutos o media hora
y luego te veré de vuelta aquí.
Está bien.
Ojalá hayas logrado terminar
algunas de estas tareas
o mejor aún, todos ellos.
Ahora déjame mostrarte mi solución aquí.
En primer lugar, creando las matrices de dos jugadores 1 y 2,
lo haremos usando la desestructuración
y vamos a desestructurar esta matriz de 'jugadores'.
Esta es una gran matriz
que contiene dos matrices allí
para que podamos crear una variable
para cada uno de estos
simplemente desestructurando la matriz original.
Entonces 'jugadores1' y 'jugadores2'
es el resultado de desestructurar 'game.players'.
Vamos a ver.
Jugadores1 y jugadores2.
De hecho, estas son exactamente las dos matrices
que antes estaban juntos en 'game.players'.
Ahora son estas dos matrices separadas.
Próximo paso,
deberíamos crear una variable 'portero'
y luego una matriz
con todos los jugadores restantes.
Cada vez que escuche 'restante',
puedes pensar en el resto de la sintaxis, ¿verdad?
Entonces, de nuevo, usaremos la desestructuración
y lo haremos en base a
los jugadores de una matriz.
Así es el equipo del Bayern de Múnich.
Entonces, a partir de ahí,
tomamos el primer valor
y almacenarlo en la variable del portero
y luego la siguiente variable
debería llamarse, recuerde, 'fieldPlayers'.
Y debe contener todos los valores restantes.
que no han sido tomados de la matriz todavía.
Lo hacemos usando la sintaxis rest.
Comprobemos de nuevo.
Portero y jugadores de campo,
y de hecho, eso funcionó maravillosamente.
A continuación, nuestra tarea es crear
una matriz con todos los jugadores,
como 'todos los jugadores',
y tan simple,
podemos usar el operador de propagación
para extender ambas matrices de reproductores.
Entonces 'players1' y esos son los primeros 11 jugadores
y luego también ponemos a todos los otros 11 jugadores
de (indistinto) aquí también.
De hecho, obtenemos una sola matriz con 22 elementos,
así que con todos los jugadores allí.
Veo que con esto empiezas a ver
cuán útiles son estos operadores muy simples de usar
y que sin ellos tendríamos
mucho más trabajo por hacer.
De todos modos, en el ejercicio,
vamos a crear una nueva matriz
que contendrá 'jugadores1'
más otros 3 jugadores.
Eso es 'players1Final'
y hagamos lo que acabo de decir.
Tomamos todos los jugadores de 'players1',
estamos desempaquetando esa matriz, básicamente,
en esta nueva matriz
y luego añadimos los tres nuevos.
Thiago, Coutinho y Periscic.
Este, ni siquiera necesitamos echar un vistazo
en la consola,
podemos estar seguros de que es correcto.
A continuación, queremos crear tres variables.
basado en este objeto de 'probabilidades', aquí.
Entonces 'equipo 1' y este aquí debería llamarse 'sorteo'
y luego 'equipo2'.
¿Bueno?
Así que hagamos una desestructuración anidada aquí
y entonces,
Básicamente, hazlo así.
Vamos a destruir solo la variable del juego.
Así que para hacerlo un poco más, incluso,
de un reto
Ya podemos hacer 'game.odds' aquí,
pero hagámoslo así.
Tomamos 'juego' y de ahí
tomamos la propiedad 'odds'.
Entonces, si hiciéramos solo esto,
entonces esto ahora crearía
una variable llamada 'cuotas'
con todo el objeto allí.
Pero eso no es lo que queremos,
por lo que podemos desestructurar aún más este resultado.
Recuerde, usamos los dos puntos aquí nuevamente.
Para mí, esta es quizás la parte más confusa.
de desestructurar.
Pero, bueno, así es como funciona.
Ahora, básicamente,
estamos dentro del objeto 'odds',
así que ahora podemos tomar 'equipo1', 'x'
y 'equipo2' fuera.
'Equipo1', 'x' y 'equipo2'.
Pero ahora, recuerda que en lugar de x,
en realidad queríamos llamarlo 'dibujar'.
Así que usamos de nuevo el colon
y luego darle el nombre de la variable
que queremos
Eso es como lo hicimos antes
con el restaurante.
Pero claro, aplicado a otro contexto.
Dibuja y equipo1 o equipo2.
Solo por asegurar,
y de hecho, estos son exactamente los tres valores
que tenemos arriba.
A continuación, el número 6.
Esto va muy bien.
Vamos a crear nuestra función printGoal ahora.
Como esto.
Que, recuerda, debe tomar en
una cantidad arbitraria de jugadores.
Y lo que queremos decir con eso es esto,
así que permítanme comenzar llamando a la función aquí
para que quede mas claro.
En los datos de prueba decía usar
Davies, Müller, Lewandowski y Kimmich,
así como esto.
Pero luego, por supuesto,
se supone que funciona igual
con otro número de jugadores,
por ejemplo solo estos dos.
Entonces, la forma en que especificamos eso aquí en nuestro código
es usar los demás parámetros.
¿Recuerda eso?
Así que esto será básicamente
agregar todos los argumentos entrantes
en una matriz.
Ahora comencemos iniciando sesión aquí
cuantos goles se marcaron.
Eso es, por supuesto,
la longitud de la matriz de jugadores entrantes.
Entonces 'players.length', se marcaron goles.
Y así, de hecho, esta primera llamada aquí
nos da 4 goles se marcaron
porque tenemos cuatro argumentos,
y luego se anotaron 2 goles.
Y después de estos ejemplos,
la instrucción nos dice que usemos
en realidad estos valores.
Así que esta matriz 'game.scored'.
Ahora no podemos simplemente hacer esto.
¿Bien?
Quiero decir, podemos,
pero no nos va a dar
el resultado que esperamos.
Entonces, en cambio, obtenemos 1 goles marcados
y eso es porque solo pasamos en un argumento.
Vamos a ver.
En realidad agregue los jugadores para ver lo que quiero decir,
y el problema aquí en esta última llamada de función.
Saquemos a estos dos.
Entonces el problema es que ahora obtenemos una matriz
y en esa matriz esta esta matriz
con los cuatro elementos.
Entonces, en cambio, realmente necesitamos estos argumentos aquí
uno a uno.
Necesitamos sacar a los jugadores de la matriz.
Y espero que puedas ver
adónde lleva esto.
Usamos el operador de propagación para hacer precisamente eso
y ahora estamos en lo correcto.
Excelente.
Ahora también se suponía que debíamos imprimir
todos los jugadores uno por uno a la consola,
pero no voy a perder el tiempo con eso ahora.
Ya lo hicimos muchas veces antes.
Finalmente, ahora imprimamos en la consola.
qué equipo es más probable que gane
basado en las variables de probabilidad.
Básicamente,
estas variables que creamos aquí antes,
'equipo1' y 'equipo2', que contienen estas cuotas.
Recuerda que el equipo con las cuotas más bajas
es más probable que gane.
Ahora deberíamos imprimir eso en la consola.
sin una declaración 'if'
o el operador ternario.
Probablemente puedas adivinar que deberíamos usar
un operador lógico para eso.
Lo que necesitamos probar primero,
es verificar si 'equipo1' es menor que 'equipo2'.
Y en esta condición,
el equipo 1 es más probable que gane.
¿Bien?
Así que ya imprimamos eso en la consola.
y luego usamos el operador lógico
lo que nos permite llegar a la meta aquí.
Entonces, el equipo 1 tiene más probabilidades de ganar.
Entonces, básicamente, queremos esto aquí.
ser evaluado cuando el resultado
de esta operación es verdadera.
y cual es el operador logico
que sigue funcionando
cuando el primer valor es verdadero?
Bueno, es el operador final, ¿verdad?
Los cortocircuitos del operador 'o'
cuando el primer valor es verdadero.
Esto no es lo que queremos,
porque entonces ahorita haría un corto circuito
y esto no sería evaluado.
Pero en este caso, cuando esto es cierto,
en realidad queremos que la evaluación continúe.
Por lo tanto, este es el camino a seguir.
Entonces, sí, es más probable que gane el equipo 1.
Ahora, si las probabilidades fueran al revés,
digamos que aquí teníamos 11,
entonces no pasaría nada.
Así que ahora también tenemos que hacer esto aquí en otro momento.
y hacer lo contrario, básicamente.
Ahora, si 'equipo2' tiene menos que 'equipo1',
entonces el equipo 2 es más probable que gane.
Entonces ahora obtenemos ese resultado correspondiente allí.
Vamos a devolverlo.
Bueno.
Y reto completado.
Espero que todo esto tenga sentido
y esa fue una gran manera de revelar todo
que habíamos hecho hasta ahora.