Wejściowy obwód sterowania Python

0

Pytanie

Początkujący python tutaj. Nabyciu pewnej wprawy w korzystaniu w zarządzaniu wprowadzania danych przez użytkownika. Próbuje zrobić cykl wprowadzania danych przez użytkownika, aby rozpocząć, jeśli używany jest coś, z wyjątkiem liczby między 1 i 10. Próbowałem przez kilka godzin próbował użyć polecenia "Spróbuj i poza", ale nie był w stanie zrobić to dobrze. Co robię nie tak? Dziękuję.

Edytuj: Dziękuję wszystkim za pomoc, jednak problem nadal nie jest rozwiązany (ale bardzo blisko!) Staram się zrozumieć, jak wrócić do początku, jeśli wpisane coś, z WYJĄTKIEM liczby całkowitej. Agent Biszkopt (powyżej) dał świetny odpowiedź dla liczb zmiennoprzecinkowych, ale każde nowe słowo używając lub litera nadal zgłasza błąd. Staram się zrozumieć, jak to zrobić cykl, gdy wprowadza się coś przypadkowego (z wyjątkiem liczb całkowitych od 1 do 10). Żaden z powyższych przykładów nie dał wyników. Dziękuję za pomoc

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

Znalazłem pewne problemy.

Po pierwsze, twój operator wprowadzania po prostu wywoła błąd, jeśli zostanie wprowadzona wartość zmiennoprzecinkowa, bo int na początku wymaga, aby wszystkie elementy wejściowe były liczby, i . to nie jest liczba.

Po drugie, twoje stwierdzenie "jeszcze". else po prostu pozostanie jak else:i później nie przyjmuje żadnych argumentów lub parametrów.

Teraz, jak sprawdzić, czy liczba jest liczbą całkowitą? Spróbuj to:

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:")

To przyjmuje wartość zmiennoprzecinkowa, ale przyjmuje go tylko wtedy, gdy jest ona równa liczbę całkowitą, zatem (round(number)==number).

Mam nadzieję, że to odpowiedź na twoje pytanie.

2021-11-15 08:32:00
0

Przede wszystkim, nie można użyć warunku w else oświadczenie. Ponadto, należy użyć or operator zamiast and jeśli jeden z warunków przyjęcia.
Tak więc, twój kod powinien być taki

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

Dzięki ack (powyżej) za to, że wskazał mi na przydatne linki. Po zapoznaniu się z innego tematu, znalazłem rozwiązanie. Być może nie jest to idealny kod, ale on działa na 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

W innych językach

Ta strona jest w innych językach

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