Estoy tratando de validar una entrada en Python que necesita tener diez dígitos y un número no negativo. Pensé que usaría un par de declaraciones try-catch para hacerlo, pero incluso cuando el resultado se ajusta a una excepción, la excepción no se activa

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

Espero que simplemente devuelva "Falso" cuando inserto algo como "123" o "-1029347365", pero no hay salida

0
TheArmaniCode 4 oct. 2019 a las 15:15

4 respuestas

La mejor respuesta
i = input()
if len(str(i)) == 10:
  print("true")
else:
  print("False")

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

Lo suficientemente simple ... espero que ayude

Si desea aumentar las excepciones, puede optar por las respuestas anteriores 🙂

1
Alex ÁñTø ÄçhäDäñ 4 oct. 2019 a las 12:44

Intente ... excepto que solo funciona, cuando su código produce una excepción. En su caso, solo compara dos afirmaciones y el resultado puede ser Verdadero o Falso. Para que funcione, puede ponerlo en:

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

(para generar manualmente una excepción si su declaración es Falsa), o mejor use afirmar:

# assert <condition>,<error message>
assert (float(i) > 0) == True, "False"
0
natter1 4 oct. 2019 a las 12:22

Si está configurado para usar un try catch, que puede ser útil. Siempre puedes crear tus propias clases de excepción.

Lo que está buscando hacer se puede lograr con una simple declaración if como

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

Pero supongo que podría tener una razón para usar Try catch. Aquí hay un enlace que puede ser útil para usted. https://www.programiz.com/python-programming/user-defined- excepción

1
Michael 4 oct. 2019 a las 12:36

Estoy de acuerdo con la respuesta anterior, esto hará el truco:

assert (((len(str(i)) == 10) == True) and ((float(i) > 0) == True)), "False"
1
Ivan Mitevski 4 oct. 2019 a las 12:33
58236236