Curso Python para GUTL (V)

Hola a los visitantes de GUTL, hoy vamos con una nueva entrega del curso Python, que como ya les había dicho, comenzamos con la lógica de programación, quizá les choque un poco, ya que se introducen muchos conceptos nuevos, pero no se preocupen, iremos paso a paso explicando detalladamente cada cosa nueva… así que aquí les dejo un script que analizaremos líinea a línea:

x = 5  #x es el número a adivinar
print("hola, puedes adivinar el numero? del 1 al 10!!!")
y = 0
while y != x:
    y = int(input("adivina el numero: "))
    if y == x:
        print('perfecto, ganaste!!!!')
        break
    elif y > x:
        print('no, ese es muy alto!!!')
    elif y < x:
        print('nop, ese es muy bajo!!!')
print('game over!!!')

Bien, la primera línea, le asignamos a x el número que queramos que se adivine, en este caso es 5, luego viene #x es el número a adivinar , que es un comentario, pero esto ya lo hemos visto antes, no?

print(«hola, puedes adivinar el numero? del 1 al 10!!!»)

simplemente un print, nada complicado aqui…

y = 0

ok, aqui es algo un poco extraño, y = 0 , pero que es y? por que igual a cero? Sencillo, como nosotros estamos escribiendo el programa, sabemos que debemos tener una variable para coger la entrada del usuario, (como vemos en la línea 5), y lo ponemos igual a cero, para crear el bucle, que viene en la siguiente línea.

while y != x:

sip, esto es algo nuevo, lo que tienes que saber es que while es el inglés para mientras, y que != significa ‘no igual a‘.. sabiendo esto, se vuelve bastante simple, verdad, dice que mientras x no sea igual a y, (mientras 5 != 0) que nunca seran iguales, porque 5 = 0 ??? nop, no lo creo… esto, así tan simple, es el la ‘cabeza’ (inicio) de un bucle, limpio, sencillo, y facil de entender… luego, vienen dos puntos ‘: ‘ ), esto significa que lo que sigue, y esté indentado, será el ‘cuerpo’ (contenido)  del bucle.

Un momento, in-den-ta-do ? que es eso?

Bueno, eso tampoco se había visto antes, así que lo veremos ahora, es igual de sencillo, piensa en indentado como subordinado a, o sea, el cuerpo del bucle se subordina a su cabeza, el truco es que el subordinado debe ir después de los dos puntos ‘ : ‘ y con dos(2) o tres(3) espacios (al inicio) más que su cabeza. Para entenderlo mejor, cuando pongas los dos puntos, y entres a la línea nueva, aprieta espacio 2 o 3 veces y sigue como si nada hubiese pasado. Todo lo que no este subordinado, no se considerará parte del bucle, y no se ejecutará correctamente… espera que tengan eso siempre en mente.

y = int(input(«adivina el numero: «))

bien, este es parte del cuerpo del bucle, y es un simple int(input()) vamos, que eso ya lo vimos en este post.

if y == x:

if? ahora que es eso? 😀 ok, si sabes inglés (vamos, que programación es inglés) sabes que if significa si, pero un si condicional, como cuando decimos, si tienes sed toma agua… y claro el == es otra historia, esto es comparación algo como mayor que (>), menor que (<), igual que (==), diferente a (!=), etc etc….  si le agregamos el if, y los dos puntos al final, se vuelve claro, es parecido al bucle aunque no sea un bucle, funciona muy parecido, pues ha de tener un cuerpo (in-den-ta-do).

hmmm, indentado de nuevo?

bueno, para entender mejor el indentado y la doble indentación es mejor un ejemplo un poco gráfico… recuerda, el cuerpo debe ir 2 o 3 espacios despues de la cabeza, como su cabeza esta dentro de otro bucle quedaría algo así:indentacionYa entendido esto de indentación dentro de indentación, podemos seguir..en esta misma línea revisamos si el número que puso el usuario y es igual al número que hay que adivinar x. Y si lo es… pues hacemos el  print(‘perfecto, ganaste!!!!’) y veremos un break que es el encargado de romper el bucle, en este caso rompe el while y va directo a print(‘game over!!!’)

elif y > x:

bueno bueno, nuevamente, elif es una alusion a else if para el español sino si, quiere decir, si no se cumplio el if, presentar otro if… supongamos que el usuario puso un número equivocado, se comprueba en el if y == x, y como no es igual, sigue con elif, y vuelve a comprobar, pero aqui comprueba si el número del usuario es mayor que el nuestro, ya que no es igual, queremos decirle si se pasó, que en caso de cumplirse, hace un print(‘no, ese es muy alto!!!’); y como no tenemos break, vuelve a su bucle padre while y != x: y vuelve a ejecutar toda la operación desde ahí.

elif y < x:

vamos, que este es lo mismo que el anterior, pero revisa si es menor, si se quedó corto, para decirte print(‘nop, ese es muy bajo!!!’), y volver todo al bucle padre, el maravilloso while y != x:

print(‘game over!!!’)

Vaya, este código, al estar fuera de todo bucle, se ejecuta luego de que el bucle while y != x: se interrumpa, con un break u otras condiciones, y supuestamente solo se ha de mostrar si el usuario adivina el número ganador…

A modo de nota, les explico la diferencia entre == y = … el == es para comparar y el = es para asignar un valor a una variable… sencillo

Uff estuvo un poco intensa la lección de hoy, pero con esto creo que cubrimos una buena parte de bucles e indentación…. Espero sus feedback en los comentarios…

¿Te resultó interesante? Compártelo ...



danielqba

Publicado por danielqba

Forma parte de GUTL desde el 7 agosto, 2013. si Linux te da la espalda, tócale el kernel

Este artículo tiene 9 comentarios

  1. Y si se substituye la primera línea por:

    import random
    x = random.randrange(1,11)

    Se tiene una app para adivinar números del 1 al 10 completamente funcional!!!

    Claro, que esto añade un poquito mas de complejidad al tutorial, se importa el módulo de números aleatorios, y se pide uno del 1 al 10.

    Saludos.

    • si, pero primero hay que explicar los modulos, como importar, como usarlos, etc…. pero si, poco a poco vamos agregando cosas a este script, ese es el objetivo

  2. OK, dejame decirlo ahora aunque sea en los comments…
    Todos aquellos que quieran «complicar» un poco mas este script, pueden quitar la primera linea y poner:

    from random import randint
    x = randint(1, 10)

    esto se explicara en post mas adelante… pero el que sepa lo que significa, pues que lo use

  3. Solo una pregunta, ¿las comillas simple o dobles se utilizan indistintamente? Porque veo que en:

    print(“hola, puedes adivinar el numero? del 1 al 10!!!”)

    utilizan comillas dobles pero en:

    print(‘nop, ese es muy bajo!!!’)

    las utilizan simples.

    • si, es indistintamente, pero cuando usas doble, puedes incluir comillas simples como parte del print…
      print(«hola ‘estas comillas’ simples se muestran»)

    • Se prefieren las comillas simples en python3 mientras que las dobles son de python2 pero funcionan en python3 por compatibilidad y además por una funcionalidad extra de poder poner strings dentro de strings
      «hola esto es un ‘string'»
      ‘hola esto es un «string»‘
      Ambas funcionan

Los comentarios están cerrados.