Fijar números dentro de un rango usando Python

Vaibhav Vaibhav 12 abril 2022
Fijar números dentro de un rango usando Python

La sujeción se refiere a limitar un valor dentro de un rango. Cuando un valor excede un rango, se cambia al valor más grande posible, y si el valor supera un rango, se cambia al valor más pequeño posible.

En este artículo, aprenderemos cómo sujetar números dentro de un rango usando Python.

Fijar números dentro de un rango usando Python

El siguiente código de Python muestra cómo sujetar números dentro de un rango.

def clamp(n, smallest, largest):
    return max(smallest, min(n, largest))


print(clamp(1.000001, 0, 1))
print(clamp(34.2, 0, 34))
print(clamp(45, 0, 10))
print(clamp(1, 0, 1))
print(clamp(-100, 0, 100))

Producción :

1
34
10
1
0

La función auxiliar anterior devuelve el valor de entrada dentro del rango. Fíjate cómo se han utilizado las funciones min() y max() para la implementación.

Una forma más creativa de escribir la función auxiliar anterior es usar una lista y una operación de clasificación. El siguiente código de Python muestra esto.

def clamp(n, smallest, largest):
    return sorted([smallest, n, largest])[1]


print(clamp(1.000001, 0, 1))
print(clamp(34.2, 0, 34))
print(clamp(45, 0, 10))
print(clamp(1, 0, 1))
print(clamp(-101, 0, 100))

Producción :

1
34
10
1
0

El valor perfecto o fijado siempre estará en el medio de la lista o en el índice 1. En caso de que el valor de entrada sea mayor que el valor más grande posible, el valor más grande posible se colocará en el medio de la lista.

Si el valor de entrada es más pequeño que el valor más pequeño posible, el valor más pequeño posible estará en el medio de la lista. Y, si el valor de entrada está dentro del rango, estará en el medio de la lista.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.