Я пытаюсь сделать ограничитель для своего приложения Python (?). Это просто. Ну должно быть просто.

Я хочу ограничить ввод от 0,09 до 5,67 фунтов стерлингов. У меня проблемы, хотя. Я пытался:

challenge1 = input('Please enter money: ',float(0.09, 5.67))
challenge1 = input('Please enter money: ',float(>0.08, <5.68))
challenge1 = input('Please enter money: ',float(>0.09, <=5.67))
challenge1 = input('Please enter money: ',float(math.max(0.09, math.min(5.67)))

Но ни один из них не работает. Импортная математика тоже. И я хотел бы, чтобы это было настолько просто, насколько это возможно. Никаких циклов, операторов if и т.д.

Любая помощь будет принята с благодарностью.

Спасибо.

-1
Josh Smith 4 Окт 2022 в 22:01
Ответьте на этот вопрос помочь вообще?
 – 
quamrana
4 Окт 2022 в 22:02
Эти решения не кажутся такими простыми, как хотелось бы спрашивающему.
 – 
Ismail Hafeez
4 Окт 2022 в 22:03
2
Что заставило вас поверить, что input может ограничивать что угодно? Это не
 – 
mozway
4 Окт 2022 в 22:07
2
Также float(0.09, 5.67) недействителен. Вы не можете просто придумать синтаксис, который, по вашему мнению, должен работать. Язык дает вам кучу инструментов, таких как, да, циклы и операторы if, из которых вам нужно построить нужную логику.
 – 
Mark
4 Окт 2022 в 22:08
Вам придется использовать if, фундаментальную конструкцию в любом языке программирования. Почему вы хотите избежать этого? Есть некоторые конструкции, например, a < n , где нет явного if, но он, безусловно, неявный и будет использоваться «под прикрытием».
 – 
OldBill
4 Окт 2022 в 22:09

2 ответа

Самый простой метод, как мне кажется, это, к сожалению, чистый оператор if.

if challenge1 > 0.09 and challenge1  < 5.67:
    #do something
else:
    print("Invalid")

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

def Limit(challenge1):
    if challenge1 > 0.09 and challenge1  < 5.67:
        #do something
    else:
        print("Invalid")

someValue = input()
Limit(someValue)
0
Ismail Hafeez 4 Окт 2022 в 22:08
OP по какой-то причине не хочет использовать if
 – 
OldBill
4 Окт 2022 в 22:10
1
В Python вы можете просто написать 0.09 < challenge1 < 5.67
 – 
Gábor Fekete
4 Окт 2022 в 22:10
Ну, я сомневаюсь, что у него есть другой выбор.
 – 
Ismail Hafeez
4 Окт 2022 в 22:10
Хороший улов
 – 
Ismail Hafeez
4 Окт 2022 в 22:11

Вы можете сделать что-то подобное, чтобы избежать явного if, но вам понадобится цикл while:

while 0.09 < (value := float(input('Please enter money: '))) < 5.67:
    print(value)

Таким образом, все/любые введенные значения, которые могут быть преобразованы в числа с плавающей запятой и находятся в пределах указанного диапазона, будут напечатаны. Недопустимые значения вызовут ошибку ValueError. Значения вне диапазона разорвут цикл

0
OldBill 4 Окт 2022 в 22:13