Menú principal

Mostrando entradas con la etiqueta Random. Mostrar todas las entradas
Mostrando entradas con la etiqueta Random. Mostrar todas las entradas

domingo, 7 de febrero de 2021

Manejo de excepciones - Python

En el anterior post vimos como podían surgir posibles problemas si el usuario no introducía como extremos del intervalo números. Ahora trataremos de cubrir situaciones inesperadas para que el programa pueda responder con un mensaje de error, para ello utilizaremos las excepciones.

Las excepciones constan por lo menos de dos partes: 'try' y 'except TypeError'. Dentro de try introduciremos la sección critica del programa, es decir, donde pueden surgir errores. Si sucede una situación la cual el programa no ha contemplado previamente, saltará la excepción que será tratada dentro de 'except TypeError'. En nuestro caso el programa imprimirá un mensaje de error y devolverá al sistema -1 indicando así que algo ha ido mal.

De esta forma si el usuario introduce una cadena de caracteres como extremo del intervalo, la excepción saltará y el sistema sabrá manejar la situación.

A continuación se muestra una posible solución:

from random import *

def aleatorio(a,b):
    try:
        if a>b:
            aux=a
            a=b
            b=aux      
        return randint(a, b)
    except TypeError:
        print("Los limites deben ser numeros")
        return -1

for i in range(0,5):
    print(aleatorio(2,7))

Obtener números aleatorios comprendidos en un intervalo con Randint() - Python

Lo primero que debemos hacer es importar la biblioteca random que nos permitirá utilizar el comando randint() posteriormente. Lo haremos de la siguiente forma:

from random import *

Ahora definiremos una función que nos devuelva un numero aleatorio entre dos valores dados. Contemplaremos la posibilidad de que el usuario introduzca un valor del extremo inferior del intervalo mayor al del extremo superior (por ejemplo [7,2]). Para solucionar este posible fallo, se intercambiarán los valores de los extremos del intervalo (en nuestro ejemplo resultaría [2,7]). Finalmente utilizaremos randint(extremo inferior, extremo superior).

Por último, se ha realizado un bucle for para sacar por pantalla 5 valores aleatorios comprendidos en el intervalo indicado por el usuario.

Posible solución:

from random import *

def aleatorio(a,b):
    if a>b:
        aux=a a
        a=b b
        b=aux
    return randint(a, b)

for i in range(0,5):
    print(aleatorio(2,7))

Cabe destacar que si el usuario introduce una cadena de caracteres como extremo del intervalo, el programa no funcionará. En el siguiente post haremos unas pequeñas modificaciones para contemplar estas situaciones.