Permitir elegir un número solo entre min y max.
Publicado por Jorge Alberto (50 intervenciones) el 19/12/2020 04:20:18
EDIT: Problema solucionado. El tema esta en la línea 5. No puede ser igual si no sólo menor o mayor. Gracias.
Hola. Qué tal? Estoy con un ejercicio que lo tengo casi listo, pero me encuentro con un pequeño problema. El ejercicio es el siguiente:
Implementar la función pedir_entero(mensaje, min, max), que debe imprimir el mensaje y luego esperar a que el usuario ingrese un valor. Si el valor ingresado no es un número entero, o no es un número entre min y max (inclusive), se le debe avisar al usuario y pedir el ingreso de otro valor. Una vez que el usuario ingresa un valor válido, la función lo debe devolver. Ejemplo:
>>> z = pedir_entero("¿Cuál es tu número favorito?", -50, 50)
¿Cuál es tu número favorito? [-50..50]:
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: hola
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: -60
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: 51
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: -16
>>> z
-16
El código que escribí es:
CASI logra su cometido, con la excepción justamente de 'min' y 'max'. Esos valores los toma como inválidos. Fácilmente lo podría arreglar cambiando los valores a -1 y 8, pero la idea del ejercicio es que sean 0 y 7.
Por otra parte, uso cadena de texto por dos razones; primero, estoy con la guía de cadena de texto, por lo que me resulta lógico usar eso; segundo, y capaz más importante, evita que el usuario pueda anotar "hola" y lo tome como válido.
Si alguien me puede dar una mano, ya sea arreglando el problema de los extremos o explicando cómo se haría sin usar cadena de texto, les agradezco.
Hola. Qué tal? Estoy con un ejercicio que lo tengo casi listo, pero me encuentro con un pequeño problema. El ejercicio es el siguiente:
Implementar la función pedir_entero(mensaje, min, max), que debe imprimir el mensaje y luego esperar a que el usuario ingrese un valor. Si el valor ingresado no es un número entero, o no es un número entre min y max (inclusive), se le debe avisar al usuario y pedir el ingreso de otro valor. Una vez que el usuario ingresa un valor válido, la función lo debe devolver. Ejemplo:
>>> z = pedir_entero("¿Cuál es tu número favorito?", -50, 50)
¿Cuál es tu número favorito? [-50..50]:
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: hola
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: -60
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: 51
Por favor ingresa un número entre -50 y 50.
¿Cuál es tu número favorito? [-50..50]: -16
>>> z
-16
El código que escribí es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def devolver_entre_min_y_max(mensaje,min,max):
print(mensaje,end="")
numero_ingresado = input("")
while numero_ingresado <= min or numero_ingresado >= max:
print("Por favor, ingresa un número entre 0 y 7.")
print(mensaje,end="")
numero_ingresado = input("")
return numero_ingresado
devolver_entre_min_y_max("¿Cuántas copas Libertadores puede llegar a tener un equipo elegido al azar?: ","0","7")
CASI logra su cometido, con la excepción justamente de 'min' y 'max'. Esos valores los toma como inválidos. Fácilmente lo podría arreglar cambiando los valores a -1 y 8, pero la idea del ejercicio es que sean 0 y 7.
Por otra parte, uso cadena de texto por dos razones; primero, estoy con la guía de cadena de texto, por lo que me resulta lógico usar eso; segundo, y capaz más importante, evita que el usuario pueda anotar "hola" y lo tome como válido.
Si alguien me puede dar una mano, ya sea arreglando el problema de los extremos o explicando cómo se haría sin usar cadena de texto, les agradezco.
Valora esta pregunta


1