Как проверить пользовательский ввод для нескольких условий в одном цикле или функции в Python 3? - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь взять user-input, но мне нужно, чтобы входное значение было целым числом И было от 1 до 9. Я попытался поместить "в диапазоне (1,10)" в несколько мест в коде, но это не работал Мне нужно, чтобы программа продолжала запрашивать у пользователя правильный ввод, пока он не даст правильный ввод. До сих пор я был только в состоянии убедиться, что их ввод является целым числом с помощью следующего кода. Я буду принимать ввод, используя int(input("...")), а не input("...").

while True:
    try:
        ui1 = int(input("Player 1, Your move. Select your move. "))
        break
    except ValueError:
        print("You have to choose a number between 1 and 9")
        continue

Ответы [ 4 ]

0 голосов
/ 06 июля 2018
# beJeb
# Stack overflow -
# /10541003/kak-proverit-polzovatelskii-vvod-dlya-neskolkih-uslovii-v-odnom-tsikle-ili-funktsii-v-python-3

# Our main function, only used to grab input and call our other function(s).
def main():

    while True:   
        try:
            userVar = int(input("Player 1, Your move. Select your move: "))
            break
        except ValueError:
            print("Incorrect input type, please enter an integer: ")

    # We can assume that our input is an int if we get here, so check for range
    checkRange = isGoodRange(userVar)

    # Checking to make sure our input is in range and reprompt, or print.
    if(checkRange != False):
        print("Player 1 chooses to make the move: %d" %(userVar))
    else:
        print("Your input is not in the range of 1-9, please enter a correct var.")
        main()

# This function will check if our number is within our range.
def isGoodRange(whatNum):
    if(whatNum < 10) & (whatNum > 0):
        return True

    else: return False

# Protecting the main function
if __name__ == "__main__":
    main()

Примечание. Я протестировал несколько входных данных, поэтому я считаю, что этого должно быть достаточно, чтобы помочь вам понять процесс, если нет, пожалуйста, оставьте комментарий, сообщение и т. Д. Кроме того, если этот ответ поможет вам, выберите его в качестве ответа помогать другим.

0 голосов
/ 06 июля 2018

Добавьте проверку перед разрывом и переместите сообщение об ошибке в конец цикла.

while True:
    try:
        ui1 = int(input("Player 1, Your move. Select your move. "))
        if 1 <= ui1 <= 9:
            break
    except ValueError:
        pass
    print("You have to choose a number between 1 and 9")
0 голосов
/ 06 июля 2018

Пусть число будет входом, который вы берете от пользователя.

while(1): #To ensure that input is continuous
    number = int(input())
    if number>=1 and number<=10 and number.isdigit():
        break #if the input is valid, you can proceed with the number
    else:
        print("Enter a valid Number")

Номер можно использовать для дальнейших операций.

0 голосов
/ 06 июля 2018

Почему бы просто не проверить isdigit() и in range?

while True:
    ui1 = input("Player 1, Your move. Select your move. ")
    if ui1.isdigit() and int(ui1) in range(1,10):
        break
    print("You have to choose a number between 1 and 9")

# Continue code out of the loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...