Python: Analyse von input, um zu sehen, ob es ein integer, float oder string
Habe ich auf dieses Ziel hingearbeitet, für einen Tag oder zwei, um zu sagen, ob eine Eingabe ist ein integer, float oder string.
Kurz gesagt, das Programm ist entworfen, um jede Eingabe in einen string, Schleife durch jede saite, und schauen Sie durch die Liste stellen. Wenn der string alle Ziffern, eine ganze Zahl, wenn es ein '.' es ist ein schweben, und wenn es keine hat ist es keine Zahl. Die offensichtliche Schwäche von strings mit Buchstaben und '.' die als Schwimmer in diesem Programm.
Dem Ziel, sich für dieses Programm ist zum öffnen von text-Dateien und sehen, was der input ist ein int, float oder andere.
Fragen
-Gibt es eine Möglichkeit zur weiteren Optimierung dieses Programm
-Wie kann ich das ändern dieses Programm zum öffnen von text-Dateien Lesen, auswerten und schreiben-die Eingabe wird in die Liste
Ersten post!!!!!
#Checks input to see if input is integer, float, or character
integer = []
float = []
not_number = []
digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
input_list = [100, 234, 'random', 5.23, 55.55, 'random2']
for i in input_list:
i = str(i)
length = len(i)
count = 0
marker = 0
for j in i:
for k in digits:
if k == j:
count = count + 1
#k loops through digits to see if j single character
#string input is number
if count == length:
integer.append(i)
marker = 1
#count is equal to length if entire string is integers
if j == '.':
float.append(i)
marker = 1
#Once '.' is found, input is "considered" a float
if marker == 1:
break
else:
not_number.append(i)
#If code above else proves that input is not a number the
#only result is that it isn't a number
print ('Integers: ', integer)
print ('Float: ', float)
print ('Not Numbers', not_number)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie beim Lesen aus einer text-Datei, Sie erhalten immer string, damit Sie entscheiden können, zu welchem Typ gehören Sie jedes element mit
int()
undfloat()
und abfangen der Ausnahme:Du musst nicht konvertieren der Daten in string und zu verarbeiten, können Sie einfach
type
- Funktion, um den Typ und das Ergebnis in einedict
wie diese.Können Sie tatsächlich überprüfen Sie es auf diese Weise
http://docs.python.org/2/library/types.html
int
,str
, undfloat
statt dertypes
Modul: "Ab Python 2.2, built-in factory-Funktionen wie int() und str() sind auch die Namen für die entsprechenden Typen. Dies ist nun der bevorzugte Weg, um Zugriff auf den Typ statt der Verwendung der Typen-Modul."Bessere Lösung für diejenigen, die kleinere und besser optimierten code
können Sie machen Verwendung der eval-Funktion von python.
für die Prüfung, ob die input-string ist, welche Art verwenden Sie einfach den Typ(eval( Zeichenfolge )).