Python - Come controllare se l'input dell'utente è un Complesso di ingresso di tipo

0

Domanda

voglio stampare un messaggio a seconda del tipo di input, ma ogni volta che inserisco un numero complesso, PER ESEMPIO (5j) è riconosciuto come una stringa di input. Come posso risolvere questo problema? Grazie.

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')

Esempio di esecuzione:

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

ho provato a fare questo :

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')

ma non è "Perfetto"

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

È possibile aggiungere il primo blocco di codice in un blocco try

Come questo -

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')

È questo quello che volevi dire?

2021-11-24 04:15:41

No, purtroppo non è ancora stampe la "Stringa di errore" quando l'inserimento di un numero complesso
Medin Oari
0

È possibile utilizzare nidificati try-except e intrinseca funzione complex() invece.
Così, il codice deve essere come questo

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

In altre lingue

Questa pagina è in altre lingue

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