zynif Δημοσ. 15 Δεκεμβρίου 2013 Δημοσ. 15 Δεκεμβρίου 2013 Καλησπέρα έχω ένα αρχείο του οποίου κάθε γραμμή είναι όπως φαίνεται παρακάτω. low,low,5more,more,med,high,acclow,low,5more,more,big,low,unacclow,low,5more,more,big,med,goodlow,low,5more,more,big,high,vgood Προσπαθώ να το διαβάσω με το παρακάτω python script class Instance: Vals=[] Sign=0; if __name__ == '__main__': #read file for line in open('/tmp/car.data','r'): #print(line) ins=Instance() ins.Vals=line.split(',') print(ins.Vals[-1]) if 'vgood'==ins.Vals[-1]: ins.Sign=4 if 'good'==ins.Vals[-1]: ins.Sign=3 if 'acc'==ins.Vals[-1]: ins.Sign=2 if 'unacc'==ins.Vals[-1]: ins.Sign=1 ins.Vals.pop() print(ins.Sign) To θέμα είναι όμως ότι δεν γίνεται σωστά η σύγκριση.Δηλαδή το ins.Sign είναι πάντα μηδέν ενώ θα έπρεπε να πάρει τιμές από 1 έως 4.Τι κάνω λάθος ;
b_real Δημοσ. 15 Δεκεμβρίου 2013 Δημοσ. 15 Δεκεμβρίου 2013 Αρχικά έχεις δηλώσει λάθος την κλάση σου. Κοίτα εδώ http://stackoverflow.com/questions/10004850/python-classes-and-oop-basics Επισης δεν χρειαζεσαι class για να κανεις αυτο που βλεπω, 2 μεταβλητες (vals, sign) αρκουν. Τελος θες if... elif ...elif... και έτσι οπως το κανεις θα παιζει αλλα ειναι λαθος στην λογικη.
pmav99 Δημοσ. 16 Δεκεμβρίου 2013 Δημοσ. 16 Δεκεμβρίου 2013 with open("/path/to/filename", "r") as f: lines = f.readlines() for line in lines: last = line.split(",") if last == "vgood": sign = 4 elif last == "good": sign = 3 elif ...
b_real Δημοσ. 16 Δεκεμβρίου 2013 Δημοσ. 16 Δεκεμβρίου 2013 Το last ηθελε [-1] with open("/path/to/filename", "r") as f: lines = f.readlines() for line in lines: last = line.split(",")[-1] if last == "vgood": sign = 4 elif last == "good": sign = 3 elif ...
pmav99 Δημοσ. 16 Δεκεμβρίου 2013 Δημοσ. 16 Δεκεμβρίου 2013 Σωστός. Στον browser το έγραψα κατευθείαν, τέτοια ώρα που ήταν και όλας, πάλι καλά.
iceblade Δημοσ. 17 Δεκεμβρίου 2013 Δημοσ. 17 Δεκεμβρίου 2013 Το πολλαπλό if καλύτερα με dictionary κατά τη γνώμη μου
pmav99 Δημοσ. 18 Δεκεμβρίου 2013 Δημοσ. 18 Δεκεμβρίου 2013 @iceblade Συμφωνούμε, αλλά αν δεις το αρχικό post δεν είναι αυτό το πρόβλημα του OP
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα