El juego de las adivinanzas¶
Llegados a este punto, vamos a crear nuestro primer juego.
El programa¶
El texto del programa es el siguiente:
| AdivinarUnNumero.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
Lo que muestra algo así como:
Adivina un número entre 1 y 100.
Introduce 0 para abandonar.
> 27
Te quedaste corto
> 55
Te pasaste
> 43
Te pasaste
> 42
Lo adivinaste. Es 42.
Adivina un número entre 1 y 100.
Introduce 0 para abandonar.
> 0
Adios.
¿Para que necesitamos la variable jugar? Porque al escribir la sentencia:
break
salimos del bucle interno, pero no del externo. Estaríamos abandonando el juego actual y forzando un nuevo juego. Necesitamos una forma de salir del programa definitivamente.
Control de errores¶
¿Que sucedería si el usuario introduce algo que no es un número?
Adivina un número entre 1 y 100.
Introduce 0 para abandonar.
> Hola
Traceback (most recent call last):
File "/usr/lib/python3.13/idlelib/run.py", line 590, in runcode
exec(code, self.locals)
~~~~^^^^^^^^^^^^^^^^^^^
File "/mnt/compartidas/Pública/python/prueba/prueba.py", line 14, in <module>
intento = int(input("\n> "))
ValueError: invalid literal for int() with base 10: 'Hola'
La sentencia:
intento = int(input("\n> "))
toma el texto devuelto por la función input() y trata de convertirlo en
número entero.
Queremos evitar que se detenga el programa. En lugar de esta sentencia, escribimos:
try:
intento = int(input("\n> "))
except:
intento = 0
lo que significa:
intentar ejecutar lo siguiente:
sentencia1
sentencia2
sentencia3
si se produce algún fallo, ejecutar:
sentencia4
sentencia5
otras sentencias a ejecutar
Los bloques try se ejecutarán bajo supervisión, y en el caso de que se
produzca cualquier fallo, en lugar de detener el programa, gestionaremos
el error de forma elegante ejecutando lo que hay en el bloque except.
Como sucede con los bloques condicionales, no olvidar los dos puntos que
hay tras las sentencias try y except.
El programa completo:
| AdivinarUnNumero.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |