Tutorial Hawk 8 -Control de flujo

Hola a todos y Bienvenidos a un nuevo tutorial de Python, en esta ocasión hablare de la esencia de los programas: los controladores de flujo.

Figura 1.0

¿Porque me refiero a ellos como la esencia?


Pues gracias a ellos podemos controlar los acontecimientos o las conclusiones que deseamos obtener.

Aquí es donde entran los operadores Lógicos, Booleanos y Relacionales antes vistos.

Antes de empezar, pondré aquí los operadores que utilizaremos.

  • >           #Mayor que
  • <           #Menor que
  • >=         #Mayor o igual que
  • <=         #Menor o igual que
  • !=          #Diferente de
  • ==         #Igual que
Estos operadores regresan un resultado, y las posibilidades son las siguientes:
  • True     #Verdadero
  • False    #Falso
Seguramente muchos de estos operadores ya los habrán visto antes sino no se preocupen, aquí explicare como usarlo a todos.

En Python el controlador de flujo o la sentencia es un simple if (si) el cual verifica las condiciones que nosotros le planteemos, y con eso "decide" que hacer o que no y lo pongo entre comillas porque nosotros somos quienes manipulamos la información.

Un ejemplo simple:

Abrimos nuestro editor favorito, yo por hoy usare NINJA IDE, y creamor un nuevo archivo.


------------------------------Tutorial_8-Condicionales.py-----------------------------------------------


  1. #Declaramos unas variables
  2. x=5
  3. y=2

  4. #creamos nuestra condición

  5. if x > y: # si x es mayor que "y" has
  6.     print "x es mayor que y"
  7. else:# sino has
  8.     print "x no es mayor que y"
  9.     print "puedes poner mas de una instrucción"


-----------------------------------------------------------------------------------------------------------------------

Bien ahora corranlo y verán que el resultado es el esperado, obviamente x es mayor que y pero hay algo que comentar en este código:


  • La indentación en Python es muy importante, ya que no utiliza llaves para determinar bloques de instrucciones como en C o C++. Así sea por un espacio nos causara un error, es algo que hay que tener muy en cuenta.
  • La sentencia else se traduciría como: si las condiciones no se cumplen entonces realiza esto.
  • El else es meramente opcional, sino se quiere poner no es necesario hacerlo.
  • Tanto if como else pueden contener mas de una instrucción como se muestra en el ejemplo.

Veamos un ejemplo mas "complejo":




------------------------------Tutorial_8-Condicionales.py-----------------------------------------------


  1. #Declaramos unas variables
  2. x=5
  3. y=2

  4. #creamos nuestra condición

  5. if x > y: # si x es mayor que "y" has
  6.     print "x es mayor que y"
  7. elif x == y:
  8.     print "x es igual y"
  9. elif x >= y:
  10.     print "x es mayor o igual a y"
  11. elif x<= y:
  12.     print "x es menor o igual a y" 
  13. elif x< y:
  14.     print "x es menor que y"
  15. else:# en este caso el else no es necesario porque alguna de las cinco condiciones anteriores se cumplirán 
  16.     print "x no es mayor que y"
  17.     print "puedes poner mas de una instrucción"


-----------------------------------------------------------------------------------------------------------------------


Como ven metí una nueva instrucción elif esta función es prácticamente un else, pero trabaja como el if ya que podemos darle una nueva condición, de esta forma podemos abarcar mas posibilidades.

Otra forma de hacer lo mismo:

Como les dije antes, los operadores relacionales arrojan valores de True o False, pues usemoslos.


------------------------------Tutorial_8-Condicionales.py-----------------------------------------------


  1. #Declaramos unas variables
  2. x=5
  3. y=2
  4. resultado = x > y #esto nos arroja True o False
  5. #creamos nuestra condición

  6. if resultado: # traducido es: si resultado es verdadero has
  7.     print "x es mayor que y" 
  8. else:# sino es verdadero has
  9.     print "x no es mayor que y"

  10. #Bien ahora hagamoslo así:
  11. resultado = x < y
  12. if resultado: # traducido es: si resultado es verdadero has
  13.     print "y es mayor que x" 
  14. else:# sino es verdadero has
  15.     print "y no es mayor que x" 


-----------------------------------------------------------------------------------------------------------------------


Bien ahora que ya tenemos algunas herramientas hagamos algo mas interesante, y porque no un juego.

Vamos a simular un mini-juego social en donde nosotros platicaremos con un personaje, dicho personaje tendrá ciertos gustos, el juego mostrara una descripción breve del personaje, y nosotros le iremos sacando platica de distintos temas y conforme a los gustos del personaje iremos ganando puntos o perdiendo, al final del juego el personaje te dirá si le caíste bien o mal.

Aqui les dejo el codigo:


------------------------------Tutorial_8-Juego-Condicionales.py-----------------------------------------------


  1. #creamos una variable tipo entero que sera  contador para ir guardando los puntos
  2. contador = 0

  3. #creamos la variable  tipo cadena de nombre de jugador 
  4. jugador = ""

  5. #hagamos un diccionario con los datos y gustos de conversación con los puntos en base a nuestro personaje
  6. personaje= {"Nombre": "Andrea","Música": 5, "Comedia": 3, "Baile":-2, "Comida": 1, "Coqueteo":-10, "Autos": -2, "Computación": 10}

  7. #creamos una variable de tema elegido por el jugador
  8. tema= "ninguno"

  9. #hagamos una lista con gestos del personaje. Abreviaremos con una g
  10. g= [":-D",":-(",":-)",":-|",":-O",":-P"] #Solo para recordar lo visto antes pues la verdad esta de mas


  11. #creamos diálogos:

  12. print "Hola mi nombre es",personaje["Nombre"], "¿Cual es tu nombre?"
  13. jugador = raw_input()

  14. print personaje["Nombre"],":\nMucho gusto",jugador, "hoy es un buen dia :D"

  15. #mostramos las respuestas posibles:
  16. print """\nHablar de :
  17. 1) Música 2) Comedia 3) Baile 4) Comida 5) Coqueteo 6) Autos 7) Computación"""
  18. tema= raw_input()

  19. if int(tema) == 1:
  20.     print personaje["Nombre"],":\nSi ami también me encanta la música  sobre todo la de ProngonStons",g[0]
  21.     contador += personaje["Música"]#sumamos los puntos
  22.     tema= "ninguno"#reseteamos el tema

  23. elif int(tema) == 2:
  24.     print personaje["Nombre"],":\nHey que buen chiste, ¿de donde lo sacaste? ",g[5]
  25.     contador += personaje["Comedia"]#sumamos los puntos
  26.     tema= "ninguno"#reseteamos el tema
  27. elif int(tema) == 3:
  28.     print personaje["Nombre"],":\n...este pues si bailo pero casi nada, ocupo andar entonada...",g[3]
  29.     contador += personaje["Comedia"]#sumamos los puntos
  30.     tema= "ninguno"#reseteamos el tema

  31. elif int(tema) == 4:
  32.     print personaje["Nombre"],":\nSi, ese restaurante esta de lujo, y el servicio es muy bueno, sin duda iría todos los días",g[2]
  33.     contador += personaje["Comida"]#sumamos los puntos
  34.     tema= "ninguno"#reseteamos el tema

  35. elif int(tema) == 5:
  36.     print personaje["Nombre"],":\nPero que te pasa imbecil? Osea, apenas me conoces... IDIOTA!",g[1]
  37.     contador += personaje["Coqueteo"]#sumamos los puntos
  38.     tema= "ninguno"#reseteamos el tema

  39. elif int(tema) == 6:
  40.     print personaje["Nombre"],":\nPues si tu lo dices... (pinche carro mugroso) si, esta bonito...",g[3]
  41.     contador += personaje["Autos"]#sumamos los puntos
  42.     tema= "ninguno"#reseteamos el tema

  43. elif int(tema) == 7:
  44.     print personaje["Nombre"],":\nMe encanta la computación, soy programadora en Python",g[0]
  45.     contador += personaje["Computación"]#sumamos los puntos
  46.     tema= "ninguno"#reseteamos el tema
  47. else:
  48.     print personaje["Nombre"],":\nTe lo pierdes..."

  49. #mostramos las respuestas posibles:
  50. print """\nHablar de :
  51. 1) Música 2) Comedia 3) Baile 4) Comida 5) Coqueteo 6) Autos 7) Computación"""
  52. tema= raw_input()

  53. if int(tema) == 1:
  54.     print personaje["Nombre"],":\nSi ami también me encanta la música  sobre todo la de ProngonStons",g[0]
  55.     contador += personaje["Música"]#sumamos los puntos
  56.     tema= "ninguno"#reseteamos el tema

  57. elif int(tema) == 2:
  58.     print personaje["Nombre"],":\nHey que buen chiste, ¿de donde lo sacaste? ",g[5]
  59.     contador += personaje["Comedia"]#sumamos los puntos
  60.     tema= "ninguno"#reseteamos el tema

  61. elif int(tema) == 3:
  62.     print personaje["Nombre"],":\n...este pues si bailo pero casi nada, ocupo andar entonada...",g[3]
  63.     contador += personaje["Comedia"]#sumamos los puntos
  64.     tema= "ninguno"#reseteamos el tema

  65. elif int(tema) == 4:
  66.     print personaje["Nombre"],":\nSi, ese restaurante esta de lujo, y el servicio es muy bueno, sin duda iría todos los dias",g[2]
  67.     contador += personaje["Comida"]#sumamos los puntos
  68.     tema= "ninguno"#reseteamos el tema

  69. elif int(tema) == 5:
  70.     print personaje["Nombre"],":\nPero que te pasa imbecil? Osea, apenas me conoces... IDIOTA!",g[1]
  71.     contador += personaje["Coqueteo"]#sumamos los puntos
  72.     tema= "ninguno"#reseteamos el tema

  73. elif int(tema) == 6:
  74.     print personaje["Nombre"],":\nPues si tu lo dices... (pinche carro mugroso) si, esta           bonito...",g[3]
  75.     contador += personaje["Autos"]#sumamos los puntos
  76.     tema= "ninguno"#reseteamos el tema

  77. elif int(tema) == 7:
  78.     print personaje["Nombre"],":\nMe encanta la computación, soy programadora en Python",g[0]
  79.     contador += personaje["Computación"]#sumamos los puntos
  80.     tema= "ninguno"#reseteamos el tema
  81. else:
  82.     print personaje["Nombre"],":\nTe lo pierdes..."

  83. print " "
  84. #En base a los puntos obtenidos muestra un mensaje final mas que claro xD
  85. if contador >= 20:
  86.     print personaje["Nombre"],":\nEres muy agradable, hay que salir luego, este es mi Google+"
  87. elif contador >=10:
  88.     print personaje["Nombre"],":\nMe caíste bien, adiós"
  89. elif contador >= 5:
  90.     print personaje["Nombre"],":\nAdiós"
  91. elif contador < 5:
  92.     print personaje["Nombre"],":\nEres todo un idiota no se como me tope contigo"



-----------------------------------------------------------------------------------------------------------------------

Bien, es importante que lean el código para que puedan identificar unos detalles, igual los dejare aquí abajo junto con el link de descarga del .py

Utilice un nuevo concepto, al menos nuevo en mis tutoriales, y pues me refiero a los contadores, son básicamente variables que van acumulando o restando cierta cantidad a su valor inicial, y la forma mas fácil de hacerlo es como lo hice en el código anterior pero esta también esta forma:


  • contador = contador + variable 


En otras palabras dice: el valor del contador es igual a lo que tiene contador mas el valor de la variable, que es lo mismo que esto:


  • contador += variable
Y por ultimo, el print, para imprimir las opciones utilice triple comillas  lo cual no mencione en el tutorial de cadenas, al imprimir con triple comillas se logra que el texto introducido quede tal cual nosotros lo dejemos escrito, de otra forma si imprimiéramos el mismo texto con solo una comillas pasaría esto:

------------------------------Tutorial_8-Juego-Condicionales.py-----------------------------------------------
print "\nHablar de :
1) Música 2) Comedia 3) Baile 4) Comida 5) Coqueteo 6) Autos 7) Computación"

-----------------------------------------------------------------------------------------------------------------------

Resultado: Pues claro, nos daría error.

Bueno, la ventaja de hacerlo con triple comillas y no con un salto de linea es eso, el salto de linea, si fueran mas lineas de texto nos ahorraríamos unos cuantos saltos de linea.

Juego Social.py

Bueno por hoy es todo, espero que les aya gustado, si es así no olviden dejar un +1 aquí abajito al igual que sus comentarios, gracias y hasta la próxima. :D




Comentarios

Entradas más populares de este blog