Python - ¿Cómo comprobar si la entrada del usuario es un tipo Complejo de entrada

0

Pregunta

quiero imprimir un mensaje dependiendo del tipo de la entrada, pero cada vez que la entrada de un número complejo, POR EJEMPLO (5j) es detectado como una cadena de entrada. ¿Cómo puedo solucionar esto por favor? Gracias.

while True:
    a = input("a ? ")
    if (isinstance(a, complex)):
        print("Valid number, please not Complex!")  
    try:
        a = float(a)
    except ValueError:
        print ('please input a int or float')
        if (type(a)==str):
            print("Valid number, please not String!")
        continue
    if 0.5 <= a <= 100:
        break
    elif 0 <= a < 0.5:
        print ('bigger number, please: 0.5-100')
    elif a < 0:
        print ('positive number, please')
    elif a > 100:
        print ('smaller number, please: 0.5-100')

Ejemplo de ejecución:

a ? 5j
please input a int or float
Valid number, please not String!

he intentado hacer esto :

while True:
    try:
        a = input("a ? ")
        if ('j' in a):
            print("Valid number, please not Complex!")
        a = float(a)
    except ValueError:
        print ('please input a int or float')
        if (type(a)==str and 'j' not in a):
            print("Valid number, please not String!")
        continue
    if 0.5 <= a <= 100:
        break
    elif 0 <= a < 0.5:
        print ('bigger number, please: 0.5-100')
    elif a < 0:
        print ('positive number, please')
    elif a > 100:
        print ('smaller number, please: 0.5-100')

pero no es "Perfecto"

complex-numbers input python string
2021-11-24 03:53:28
2
0

Usted puede agregar el primer bloque de código en el bloque try

Como este -

while True:
    try:
        a = input("a ? ")
        if (isinstance(a, complex)):
            print("Valid number, please not Complex!")  
        a = float(a)
    except ValueError:
        print ('please input a int or float')
        if (type(a)==str):
            print("Valid number, please not String!")
        continue
    if 0.5 <= a <= 100:
        break
    elif 0 <= a < 0.5:
        print ('bigger number, please: 0.5-100')
    elif a < 0:
        print ('positive number, please')
    elif a > 100:
        print ('smaller number, please: 0.5-100')

Es esto lo que querías decir?

2021-11-24 04:15:41

No, por desgracia, todavía se imprime la "Cadena de errores" cuando inputing un número complejo
Medin Oari
0

Usted puede utilizar anidados try-except y la función incorporada complex() en su lugar.
Así, el código debe ser como este

while True:
    a = input("a? ")
    try:
        a = float(a)
        if 0.5 <= a <= 100:
            break
        elif 0 <= a < 0.5:
            print ('bigger number, please: 0.5-100')
        elif a < 0:
            print ('positive number, please')
        elif a > 100:
            print ('smaller number, please: 0.5-100')
    except ValueError:
        try:
            a = complex(a)
            print("Valid number, please not Complex!")
        except ValueError:
            print ("Valid number, please not String!")
            continue
2021-11-24 05:29:19

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................