Estoy trabajando en un pequeño proyecto para la escuela y necesitamos establecer una dificultad entre 1 y 3, pero cuando alguien ingresa un número incorrecto, recibe una línea que dice por favor elija entre 1 y 3, pero la pregunta debería repetirse, ahora el código solo termina cuando ingresa un número incorrecto.

difficulty = int(input("Difficulty: "))

while 0 > difficulty > 4:
    print("This is not a valid difficulty, please choose 1, 2 or 3")
    difficulty = int(input("Difficulty: "))

if 0 < difficulty < 4:
    print("The playing board was created with difficulty: " + str(difficulty))
0
GielConinx 10 may. 2019 a las 10:18

4 respuestas

La mejor respuesta

El ciclo while 0 > difficulty > 4 nunca se ejecuta, ya que esa condición siempre se evalúa como False, ya que 0 > 4 es False, por lo tanto, reestructuraría el ciclo while como while difficulty > 4 or difficulty < 0:, que comprueba si la dificultad es menor que 0, o mayor que 4, también como señaló @deceze, if no es necesaria ya que la condición solo golpea cuando nos aseguramos de que nuestra dificultad esté entre 0 y 4, excluyendo 0 y 4

Entonces la respuesta cambia a

difficulty = int(input("Difficulty: "))

#Check if difficulty is less than 0, or greater than 4
while difficulty < 0 or difficulty > 4:
    print("This is not a valid difficulty, please choose 1, 2 or 3")
    difficulty = int(input("Difficulty: "))

print("The playing board was created with difficulty: " + str(difficulty))

La salida se verá como

Difficulty: -1
This is not a valid difficulty, please choose 1, 2 or 3
Difficulty: 5
This is not a valid difficulty, please choose 1, 2 or 3
Difficulty: 2
The playing board was created with difficulty: 2

Otra forma de escribir el ciclo while es que debemos asegurarnos de que si la entrada es menor que 0 o mayor que 4, queremos seguir ejecutando el ciclo, que en realidad se puede lograr con while not 0 < difficulty < 4:

Entonces la respuesta se cambiará a

difficulty = int(input("Difficulty: "))

#Check if difficulty is less than 0, or greater than 4
while not 0 < difficulty < 4:
    print("This is not a valid difficulty, please choose 1, 2 or 3")
    difficulty = int(input("Difficulty: "))

print("The playing board was created with difficulty: " + str(difficulty))
1
Devesh Kumar Singh 10 may. 2019 a las 07:27

Prueba así:

difficulty = int(input("Enter input :"))
while difficulty<1 or difficulty>3:
  difficulty = int(input("Enter input between 1 and 3 :"))
print("correct input:",difficulty)
1
Shiva 10 may. 2019 a las 07:25

¡Prueba con un poco de recursión!

def getDiff():
    difficulty = int(input("Difficulty: "))

    if 0 < difficulty < 4:
        print("The playing board was created with difficulty: " + str(difficulty))
        return 
    else:
        print("This is not a valid difficulty, please choose 1, 2 or 3")
        getDiff()

getDiff()

Editar

Dificultad de regreso

def getDiff():
    difficulty = int(input("Difficulty: "))

    if 0 < difficulty < 4:
        print("The playing board was created with difficulty: " + str(difficulty))
        return difficulty 
    else:
        print("This is not a valid difficulty, please choose 1, 2 or 3")
        getDiff()

difficulty = getDiff()
0
Adrian Daniszewski 10 may. 2019 a las 07:41

"Mientras la dificultad está por debajo de 0 y la dificultad está por encima de 4" nunca puede ser cierto, ya que no hay un número que sea simultáneamente menor que 0 y mayor que 4. La forma más fácil de formatear la condición es utilizando un { {X0}}:

difficulty = int(input("Difficulty: "))

while difficulty not in range(1, 4):
    print("This is not a valid difficulty, please choose 1, 2 or 3")
    difficulty = int(input("Difficulty: "))

print("The playing board was created with difficulty: " + str(difficulty))

También puede omitir if, ya que el ciclo ya garantiza que el valor esté dentro de un rango válido; No es necesario verificar de nuevo.

1
deceze 10 may. 2019 a las 07:30