Write a Python function, clip(lo, x, hi) that returns lo if x is less than lo; hi if x is greater thanhi; and x otherwise. For this problem, you can assume that lo < hi.
Don't use any conditional statements for this problem. Instead, use the built in Python functions min andmax. You may wish to read the documentation on min and the documentation on max, and play around with these functions a bit in your interpreter, before beginning this problem.
This function takes in three numbers and returns a single number.
def clip(lo, x, hi):
'''
Takes in three numbers and returns a value based on the value of x.
Returns:
- lo, when x < lo
- hi, when x > hi
- x, otherwise
###################################################################
ACLARACION
###################################################################
El problema en si no es ningun problema, es un asunto a solucionar ;-).
tenemos tres parametros lo, x, hi.
y tres procedimientos que han de cumplirse(reglas del juego que nos pone el enunciado).
- lo, when x < lo
- hi, when x > hi
las cuales nos define el resultado que ha de dar nuestro 'miniwinnie program'. Asi que una cosa menos que pensar, nos lo dan ordenado... tambien nos dicen dos cosas;
que no podemos utilizar condicionales(1), pero nos presentan dos llamadas procedurales que estan muy bien y a las que se les puede sacar mucho partido.
min(arg1, arg2, *args[, key]):
Return the smallest item in an iterable or the smallest of two or more arguments.Devuelve el elemento más pequeño en un iterable o el más pequeño de dos o más argumentos.
max(arg1, arg2, *args[, key]):
Return the largest item in an iterable or the largest of two or more arguments.
Devuelve el mayor elemento en un iterable o mayor de dos o más argumentos.
ademas esta llamada puede incluir una a la otra, vamos a ver como funciona!:
vamos a ordenar nuestros argumentos, tenemos;
que cuando [x < lo ] me retorne --> lo
que cuando [x > hi] me retorne --> hi
y si no, me retorne x.
Entonces se puede afirmar:
que "lo" es MAYOR que x --> max(x, lo) #porque cuando lo es mayor me debe devolver lo
"hi" es mas MENOR que x --> min( x, hi) #porque cuando hi es menor me debe devolver hi
ok ahora tenemos dos condiciones mas una tercera que se incluye "per se":
min(x, hi)
max(x, lo)
y como hemos visto arriba min y max se pueden anidar en los parametros (o argumentos):
fijaros que los dos comparten un parametro, la x es comun en las dos. ahá!
luego tengo dos posibilidades... ahá! luego tengo dos soluciones:
o anido min(blabla, bleble) en max(blabla, blibli) o viceversa.
min(max(blabla,blibli), bleble)
o tambien;
max(min(blabla, bleble), blibli)
Bueno que os divertais! y no os comais mucho el tarro!
Salu2
Don't use any conditional statements for this problem. Instead, use the built in Python functions min andmax. You may wish to read the documentation on min and the documentation on max, and play around with these functions a bit in your interpreter, before beginning this problem.
This function takes in three numbers and returns a single number.
def clip(lo, x, hi):
'''
Takes in three numbers and returns a value based on the value of x.
Returns:
- lo, when x < lo
- hi, when x > hi
- x, otherwise
###################################################################
ACLARACION
###################################################################
El problema en si no es ningun problema, es un asunto a solucionar ;-).
tenemos tres parametros lo, x, hi.
y tres procedimientos que han de cumplirse(reglas del juego que nos pone el enunciado).
- lo, when x < lo
- hi, when x > hi
las cuales nos define el resultado que ha de dar nuestro 'miniwinnie program'. Asi que una cosa menos que pensar, nos lo dan ordenado... tambien nos dicen dos cosas;
que no podemos utilizar condicionales(1), pero nos presentan dos llamadas procedurales que estan muy bien y a las que se les puede sacar mucho partido.
min(arg1, arg2, *args[, key]):
Return the smallest item in an iterable or the smallest of two or more arguments.Devuelve el elemento más pequeño en un iterable o el más pequeño de dos o más argumentos.
max(arg1, arg2, *args[, key]):
Return the largest item in an iterable or the largest of two or more arguments.
Devuelve el mayor elemento en un iterable o mayor de dos o más argumentos.
ademas esta llamada puede incluir una a la otra, vamos a ver como funciona!:
vamos a ordenar nuestros argumentos, tenemos;
que cuando [x < lo ] me retorne --> lo
que cuando [x > hi] me retorne --> hi
y si no, me retorne x.
Entonces se puede afirmar:
que "lo" es MAYOR que x --> max(x, lo) #porque cuando lo es mayor me debe devolver lo
"hi" es mas MENOR que x --> min( x, hi) #porque cuando hi es menor me debe devolver hi
ok ahora tenemos dos condiciones mas una tercera que se incluye "per se":
min(x, hi)
max(x, lo)
y como hemos visto arriba min y max se pueden anidar en los parametros (o argumentos):
fijaros que los dos comparten un parametro, la x es comun en las dos. ahá!
luego tengo dos posibilidades... ahá! luego tengo dos soluciones:
o anido min(blabla, bleble) en max(blabla, blibli) o viceversa.
min(max(blabla,blibli), bleble)
o tambien;
max(min(blabla, bleble), blibli)
Bueno que os divertais! y no os comais mucho el tarro!
Salu2