PDA

View Full Version : [python3]verifica tipo carattere/numero inserito


User111
25-02-2017, 12:21
Sto scrivendo un programmino che permette di riconoscere il tipo di carattere/numero immesso in input restituendolo su schermo ma non va, praticamente viene continuamente bypassato il controllo. Ecco il listato.
#!/usr/bin/env python3
print("Questo programma verifica il tipo di numero o lettera inserita come input ")
print("Scrivi qualcosa:")
x=input()
if type(x)==int:
print("il numero è intero")
elif type(x)==float:
print("il numero è reale")
elif type(x)==complex:
print("il numero è complesso")
else:
print("il valore immesso non è un numero")
eseguendolo qualsiasi numero inserisco mi dice sempre che è un complesso (anche se metto 3 o 3.5) come mai? dove sbaglio? :confused: :stordita: grazie a chi mi risponderà :)

Agat
25-02-2017, 18:51
"La" Pythonic way è try/except no if elif ..., ma vabbè type ? OK, REPLiamo
un po':

Python 3.6.0 (default, Jan 16 2017, 12:12:55)
[GCC 6.3.1 20170109] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = input()
3
>>> type(x)
<class 'str'>
>>> type(x) == int
False


Python 2.7.13 (default, Dec 21 2016, 07:16:46)
[GCC 6.2.1 20160830] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = input()
3
>>> type(x)
<type 'int'>
>>> type(x) == int
True

OMG :asd:

Vabbè, prima che passi a java, "googolla" per isinstance vs type in python

User111
26-02-2017, 21:43
sono all'abc :sofico: che differenza esiste? non restituisce sempre la tipologia del dato da trattare?:stordita:

Agat
27-02-2017, 23:15
Terra, terra non usare type, ma isinstance, vedi ad es:

https://stereochro.me/ideas/type-vs-isinstance

Ma non dovresti usare neanche isinstance, vedi:

http://canonical.org/~kragen/isinstance/

e, affidarti al massimo a try/except, come t'ho già detto nella prima risposta :D

Il tuo codice funzionerebbe in python 2, come vedi di REPL che t'ho postato, ma non funziona più in python 3, in cui input() ti ritorna una str, che devi ovviamente convertire e verificare

User111
09-03-2017, 14:46
grazie;)