5 nov. 2016

Python 05. Cara o cruz


Python 05. Cara o cruz

Vamos a hacer un programa sencillo para elegir entre cara o cruz. Nos servirá para aprender cosas muy importantes para los juegos.

El código del programa:

Deberías escribirlo directamente en  file editor (no solo copiar y pegar). Recuerda no escribir los números de linea y copiar todo el resto tal como está.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#Este juego es para adivinar si ha salido cara o cruz

import random 

numero=random.randint(1,2)

if numero==1:
   lado='cara'
if numero==2:
   lado='cruz'

print ('¿Hola, como te llamas?')
nombre=input()

print (nombre+', ¿quieres cara o cruz?')
respuesta=input()

if respuesta==lado:
   print('¡Muy bien, '+nombre+', ha salido '+lado+', has acertado!')

if respuesta!=lado:
   print('¡Mala suerte, '+nombre+', ha salido '+lado+', has perdido!')
Cando lo tengas escrito, recuerda que debes guardar el archivo con extensión .py y para probalo pulsar F5 o hacer clic en Run- Run Module.

El resultado:

Si todo va bien, el resultado será algo como esto:

¿Hola, como te llamas?
Pedro
Pedro, ¿quieres cara o cruz?
cara
¡Muy bien, Pedro, ha salido cara, has acertado!
Por partes:

La primera linea es un comentario que indica lo que vamos a hacer

1. #Este juego es para adivinar si ha salido cara o cruz

La segunda linea (y otras más) las dejamos en blanco para separar un poco las distintas partes del programa y facilitar así su lectura.

La tercera linea es una sentencia import . Las sentencias no son funciones, son instrucciones que hacen algo pero que no nos dan ningún valor como resultado. Con import, lo que hacemos es traer un Módulo, que son programas que vienen con Python y tienen funciones adicionales. Para aligerar el programa no se incorporan por defecto, así que hay que traerlas con import. En realidad, lo que tienes que saber de momento es que, si quieres introducir azar en tu programa, deberás hacer un import random al principio del programa.

 3. import random

En la linea 5 creamos una variable numero, en la que almacenamos el resultado de una función perteneciente al módulo random, que es randint(x,y). Randint nos va a dar un integer, un número entero, que estará entre el valor de x u el valor de y. En este caso, solo podrán ser los valores 1 o 2.
Por ejemplo si queremos un entero  entre  1 y 10 deberiamos poñer random.randint(1,10), o si lo queremos entre  10 y 15 random.randint(10,15)

5. numero=random.randint(1,2)
En las lineas de la 7  a la10 empleamos la sentencia if para facer una comparación. Es decir, cogemos dos valores y comprobamos si se cumple una determinada condición que deseamos. Dependiendo de si se cumple o no, haremos que el programa haga una cosa u otra. En este caso:

7. if numero==1:
8.    lado='cara'
9. if numero==2:
10.    lado='cruz'
Aquí lo que hacemos es crear una variable lado y asignarle una cadena 'cara' ou una cadena 'cruz' dependiendo de si el número que ha salido es 1 o 2. Lo hacemos así porque es más fácil aplicar azar con randint a números que a cadenas. 
Tamvién es importante resaltar la sangria, que es el espacio que dejamos al principio de cada linea. Es muy importante respetarla, ya que, aparte de servir para leer y entender más fácilmente el programa, el file editor puede dar errores si no la aplicamos bien. De momento, recuerda que después de cada if la siguiente linea debe tener un espacio de tabulación.
Observa que ponemos dos signos =, ya que solo empreamos uno cuando queremos asignar una variable.

A continuación, las lineas 12 y 13 saludamos al jugador y le pedimos el nombre, para guardalo como nombre, como ya vimos antes.

12. print ('¿Hola, como te llamas?')
13. nombre=input()
Las lineas 15 y 16 preguntan al jugador si quiere cara o cruz, y almacenamos el resultado en la variable respuesta. El jugador tendrá que escribir exactamente 'cara' o 'cruz', si deja un espacio, confunde una letra, o incluso si pone una mayúscula, el programa le dirá que fallo. Más adelante aprenderemos mejores maneiras de hacer este programa para que no pasen esas cosas, pero de momento es mejor no complicárnos.

15. print (nombre+', ¿quieres cara o cruz?')
16. respuesta=input()

Las lineas de la 18 a la 22 vuelven a hacer una comparación, esta vez para ver si lo que ha escogido el jugador (respuesta) es igual que la variable lado que le asignamos al número que salió de la función randint. En el caso de que sea igual le daremos un mensaje de felicitación, en caso de que sea diferente (el signo != quere decir "no igual a") le daremos un aviso de que ha perdido. En los dos mensajes, incluímos la variable lado para que el jugador vea lo que sha salido

18. if respuesta==lado:
19.    print('¡Muy bien, '+nombre+', ha salido '+lado+', has acertado!')
20.
21. if respuesta!=lado:
22.    print('¡Mala suerte, '+nombre+', ha salido '+lado+', has perdido!')
Flujograma:



Ejercicios:

  1. Cambia los mensajes de bienvenida y de despedida.
  2. Modifica el programa para que haya una tercera opción "de canto".
  3. Haz un programa para adivinar la tirada de un dado. (Necesitas la sentencia variable=int(variable), que convierte un dato de tipo string en un dato de tipo integer  y/o la orden str(variable) que convierte un integer en una cadena (string)

0 comentarios:

Twitter Facebook Tuenti LinkedIn gmail Favorites More