Проверка ввода в Python с низкой и высокой границей

Мне нужна помощь в создании функции, чтобы убедиться, что ввод пользователя допустим для использования. Если он недействителен, нам нужно попросить их повторно ввести другую информацию.

Первая функция должна иметь параметр, подсказка, низкий уровень, высокий уровень, где подсказка запрашивает ввод данных пользователем, низкий уровень — это нижняя граница, а высокий — верхняя граница.

Вот что у меня есть до сих пор:

def get_int(prompt,low,high):
 inputs= int(input(prompt))
while inputs<= low and inputs >=high:
   inputs= int(input(prompt))
return inputs

person Linda    schedule 13.10.2020    source источник


Ответы (3)


У вас есть условия в странном порядке.

Это позволит убедиться, что вход находится между нижней и верхней границами. Если это так, ввод возвращается, в противном случае запрашивается снова. Я добавил небольшое необязательное сообщение, чтобы информировать пользователя об ожидаемом диапазоне.

def get_int(prompt, low, high):
    while True:
       inputs = int(input(prompt))
       if low <= inputs <= high:
           return inputs
#      else:
#          print(f"Please provide a number between {low} and {high}.")
person Guimoute    schedule 13.10.2020

Если inputs <= low истинно, то inputs >= high не может одновременно быть истинным. Поэтому проверять, верны ли обе сразу через inputs <= low and inputs >= high, не имеет смысла и всегда будет ложным. Ваш код будет работать нормально, если вы используете or вместо and:

def get_int(prompt,low,high):
    inputs = int(input(prompt))
    while inputs <= low or inputs >= high:
        inputs = int(input(prompt))
    return inputs
person Random Davis    schedule 13.10.2020

Может быть, использовать рекурсию? Как это:

def user_input():
    value = input("Please enter input: ")
    if not low <= value <= high:
        user_input()
    return value

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

person MD98    schedule 13.10.2020