Python control de entrada de bucle

0

Pregunta

Python principiante aquí. La práctica de control de entrada de usuario. Tratando de hacer que el usuario de entrada de bucle al principio si nada, pero un número entero entre 1 y 10 se utiliza. Estado tratando durante horas, trató de usar Try y except los comandos pero no podía hacerlo correctamente. ¿Qué estoy haciendo mal? Gracias.

Editar: Muchas gracias por su ayuda a todos, sin embargo, el problema aún no resuelto (pero muy cerca!) Estoy tratando de averiguar cómo volver al principio si nada, PERO un número entero que se escribe. Agente de Galletas (arriba) dio una gran respuesta por flotante los números, pero cualquier palabra o letra que se escribe todavía produce un error. Estoy tratando de entender cómo bucle cuando nada al azar (excepto los números enteros entre 1 y 10) que se escribe. Ninguno de los ejemplos anteriores producido corrcct resultados. Gracias por su ayuda

while True:
    print("Enter a number between 1 and 10")
    number = int(input())
    if (number > 0) and (number < 10):
        print("Thank you, the end.")
        break
    else number != (> 0 and < 10):
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")
controls input loops python
2021-11-15 08:25:06
3
0

He identificado algunos problemas.

En primer lugar, la instrucción de entrada que usted está usando sólo producirá un error si el valor de tipo float es entrado, porque la int al principio requiere que todos los elementos de la entrada para ser un número, y . no es un número.

Segundo; su instrucción else. else está justo a la izquierda como else:y no tiene argumentos o parámetros a posteriori.

Ahora, ¿cómo comprobar si el número no es entero? Intente esto:

while True:
    print("Enter a number between 1 and 10")
    number = float(input())
    if (number > 0) and (number < 10) and (round(number)==number):
        print("Thank you, the end.")
        break
    else:
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")

Este acepta un valor de tipo float, pero sólo se acepta si es igual a un número entero, por lo tanto el (round(number)==number).

Espero que conteste a su pregunta.

2021-11-15 08:32:00
0

Primero de todo, usted no puede utilizar una condición en un else declaración. También, usted necesita usar or operador en lugar de and si una de las condiciones es aceptable.
Así, el código debe ser como este

while True:
    print("Enter a number between 1 and 10")
    number = int(input())
    if (number > 0) and (number < 10):
        print("Thank you, the end.")
        break
    elif number < 0 or number >10:
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")
2021-11-15 08:32:15
0

Gracias a ack (arriba) para que me apunta a un vínculo útil. Mediante el estudio de otro hilo, he encontrado la solución. Puede que no sea código perfecto, pero funciona 100%:

while True:
    try:
        print("Enter a number between 1 and 10")
        number = float(input())
        if (number > 0) and (number < 10) and (round(number)==number):
            print("Thank you, the end.")
            break
        else:
            print("\n")
            print("It has to be a whole number between 1 and 10.")
            print("Please try again:")
            print("\n")
            continue
    except ValueError:
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")
        print("\n")
2021-11-16 06:21:03

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................