Προς το περιεχόμενο

Python string comparison -noobie


Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα έχω ένα αρχείο του οποίου κάθε γραμμή είναι όπως φαίνεται παρακάτω.

 

low,low,5more,more,med,high,acc
low,low,5more,more,big,low,unacc
low,low,5more,more,big,med,good
low,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.Τι κάνω λάθος ;

Δημοσ.

Αρχικά έχεις δηλώσει λάθος την κλάση σου.

Κοίτα εδώ http://stackoverflow.com/questions/10004850/python-classes-and-oop-basics

Επισης δεν χρειαζεσαι class για να κανεις αυτο που βλεπω, 2 μεταβλητες (vals, sign) αρκουν.

Τελος θες if... elif ...elif... και έτσι οπως το κανεις θα παιζει αλλα ειναι λαθος στην λογικη.

Δημοσ.

Το 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 ...

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...