Попробуйте catch для проверки ввода в Python - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь проверить ввод в Python, который должен состоять из десяти цифр и неотрицательного числа. Я думал, что для этого воспользуюсь парой операторов try-catch, но даже когда выходные данные соответствуют исключению, исключение не сработает

i = input("Please input a value: ")
try:
    (len(str(i)) == 10) == True
except:
    print("False")
try:
    (float(i) > 0) == True
except:
    print("False")

Я ожидаю, что оно просто вернется "False ", когда я вставляю что-то вроде" 123 "или" -1029347365 ", но нет вывода

Ответы [ 4 ]

1 голос
/ 04 октября 2019
i = input()
if len(str(i)) == 10:
  print("true")
else:
  print("False")

if float(i) > 0:
    print("true")
else:
    print("False")

достаточно просто ... надеюсь, это поможет

, если вы хотите поднять исключения, вы можете выбрать предыдущие ответы ?

1 голос
/ 04 октября 2019

Я согласен с предыдущим ответом, это поможет:

assert (((len(str(i)) == 10) == True) and ((float(i) > 0) == True)), "False"
1 голос
/ 04 октября 2019

Если вы настроены на использование try catch, что может пригодиться. Вы всегда можете создать свои собственные классы исключений.

То, что вы хотите сделать, может быть выполнено с помощью простого оператора if, например

if not (( len(str(i)) == 10) and (float(i) > 0)):
    #do something

, но я предполагаю, что у вас может быть причина использовать Try catch. Вот ссылка, которая может быть полезна для вас. https://www.programiz.com/python-programming/user-defined-exception

0 голосов
/ 04 октября 2019

попробуй ... кроме работает только тогда, когда твой код выдает исключение. В вашем случае вы сравниваете только два утверждения, и результатом может быть True или False. Чтобы заставить его работать, вы можете поместить его в:

if (len(str(i)) == 10) == False :
    raise

(чтобы вручную вызвать исключение, если ваше утверждение неверно), или лучше использовать assert:

# assert <condition>,<error message>
assert (float(i) > 0) == True, "False"
...