Python - Permitir elegir un número solo entre min y max.

 
Vista:
Imágen de perfil de Jorge Alberto
Val: 137
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Permitir elegir un número solo entre min y max.

Publicado por tincopasan (1082 intervenciones) el 19/12/2020 10:27:32
basicamente lo que te falta es el manejo de errores en la conversión de cadena a entero para que sea un número y no cadena:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def devolver_entre_min_y_max(mensaje,min,max):
    print(mensaje,end="")
    while True:
        try :
            numero_ingresado = int(input(""))
            break
        except:
            print("Debe ser un número")
 
    while numero_ingresado < min or numero_ingresado > max:
 
        print(f"Por favor, ingresa un número entre {min} y {max}.")
        print(mensaje,end="")
 
        try :
            numero_ingresado = int(input(""))
        except:
            print("Debe ser un número")
 
    return numero_ingresado
 
 
print("El valor es: ",devolver_entre_min_y_max("¿Cuántas copas Libertadores puede llegar a tener un equipo elegido al azar?: ",0,7))

no es lo mejor pero si funcional
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jorge Alberto
Val: 137
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Permitir elegir un número solo entre min y max.

Publicado por Jorge Alberto (50 intervenciones) el 19/12/2020 15:12:59
Puede ser. Pero ese código permite el ingreso de texto (ejemplo: "hola") y que lo tome como válido o arrojaría el mensaje de error?

Aún así, todavía no llegué a "try" y "except". Recién arranco, pero lo tengo en cuenta para cuando las estudie.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar