Ej. 35 : Tomando decisiones con funciones…

Ya he aprendido a hacer la sentencia if, funciones y listas. Ahora ha llegado el momento de mezclarlas. Voy a escribir el siguiente código e intentaré averiguar qué hace.

Ej. 35 - Programa 1Ej. 35 - Programa 2Ej. 35 - Programa 3

Ejecutando, y eligiendo opciones, me sale lo siguiente:

Ej. 35 - Terminal 1 opción

Obviamente, éste programa es tremendamente interesante para darle millones de vueltas.

Lo retomaré en un par de post para:

  1. Dibujar un mapa del juego y ver si he entendido el recorrido.
  2. Escribir comentarios en el programa
  3. Darle vueltas al juego, para ampliarlo o simplificarlo.

PREGUNTAS

P: ¿Qué hace while True:?

R: Crea un bucle infinito.

P: ¿Qué hace exit(0)?

R: En muchos sistemas operativos un programa puede abortar la ejecución con exit(0), indicando con el número pasado por parámetro si hubo un error o no. Si ejecutas exit(1), se aborta con el error, pero si se hace con exit(0), se terminará correctamente. El motivo por el que es al revés de la lógica booleana normal (con 0==False), es que así se puede usar diferentes números para indicar diferentes errores. Puedes terminar el programa con exit(100) para errores con resultados diferentes que con exit(2) o exit(1).

Ej. 31 : Tomando decisiones…

En los post iniciales principalmente he mostado cosas en pantalla y eso era necesario para ir por buen camino. Los códigos se ejecutaban empezando por la parte superior, e iban hacia abajo hasta llegar al final. Si hice una función, podía ejecutarla más tarde, pero todavía no tenía ningún elemento para tomar decisiones. Ahora que tengo if, else y elif, puedo crear código que decide cosas.

En el último post escribí varias condiciones simples.

En éste ejercicio preguntaré al usuario y tomaré decisiones basadas en sus respuestas.

Allá voy:

Ej. 31 - Código diver

Realmente éste código es graciosísimo. Me he reído mucho mientras lo escribía y lo iba siguiendo.

Consigue su objetivo, que es captar la atención ya desde que se escribe, por tanto entenderlo mejor, para después querer cambiarlo y nunca mejor dicho, jugar con él y querer crear nuestra propia versión. Es decir, repetir y repetir y repetir, para aprender mejor y acabar de disipar todas las dudas con la práctica personal. Lo que viene siendo la esencia de un programador. El autor demuestra un dominio que ya se empieza a notar. Justo cuando me estaba empezando a desmotivar. ¡¡Por fin!!  🙂

¡¡¡Un 10 al código y al autor!!!

Al ejecutar, por supuesto, voy tomando decisiones que voy respondiendo en el terminal. Algo parecido y relacionado con el ejercicio 11, en el ej. 12, ej. 14, en el ej. 15… pero muchísimo más divertido. Decisiones que condicionarán el resultado que se muestra en pantalla.

Aquí estoy jugando a éste juego de aventura…

Ej. 31 - Juego en Terminal opción 1

He elegido la opción 2 y a continuación la 2. La primera opción «la sabía» pero con la segunda tenía dudas. Me ha guiado el amarillo… ¡¡ He sobrevivido!!! XD

Por supuesto ésto está pidiendo a gritos cambiarlo, marearlo…¡¡¡y darle todas la vueltas del mundo!!!

Lo retomaré.

PREGUNTAS

P: ¿Se puede reemplazar elif con una combinación de sentencias if/else?

R: Buena pregunta. En algunos casos si, pero depende de cómo esté escrito cada if/else. Ésto significa que Python comprobará cada combinación if/else, en lugar de sólo los primeros falsos, como lo haría  if/elif/else. Practica para entenderlo.

P: ¿Cómo indico si un número está entre un rango de números?

R: Tengo dos opciones:

  1. usar 0 < x < 100 o 1 <= x < 10, que es la notación clásica
  2. o usar x in range (1, 10).

P: ¿Y si quiero más opciones en los bloques if/elif/else?

R: Fácil. Sólo debo añadir más bloques elif para posible decisión.