2017-04-30 5 views
0

Ich habe mit einem Dataset herumspielen versucht, besser zu lernen, wie man mit Python programmiert.Der Versuch, eine while-Schleife zu implementieren, bricht den Code

Der Code, den ich erstellt habe funktioniert einwandfrei, aber nur für eine Zeile einer CSV-Datei (ich habe 571 Zeilen von Daten). Dies nimmt die Reihe und vergleicht dann die erste Nummer mit der zweiten Nummer, abhängig davon, ob die erste Nummer größer oder kleiner ist, wird diese Nummer in die entsprechende Liste eingetragen. Der Code geht dann zum nächsten Wert über und macht dasselbe.

bigger = [] 
smaller = [] 
mL_ind = 1 
add = 0 
add_s = 0 

gross = [] 
largest_val = [] 
net_total = [] 


initial = open('output.csv') 
reader = csv.reader(initial) 
mathLine = [line.split(',')[1] for line in initial] 
del mathLine[0] 
mathLine = list(map(float, mathLine)) 

for value in mathLine: 
    if value > mathLine[mL_ind]: 
     bigger.append(value) 
     mL_ind = mL_ind + 1 
    elif value < mathLine[mL_ind]: 
     smaller.append(value) 
     mL_ind = mL_ind + 1 

for value in bigger: 
    add = value + add 

for value in smaller: 
    add_s = value + add_s 

total = add - add_s 
gross.append(total) 

largest = max(mathLine) 
largest_val.append(largest) 

net = total/largest 
net_total.append(net) 

Was ich versuche, den Index zu tun war, zu verwenden (nach line.split) aus: mathline = [line.split ('') [1] für Zeile in Anfang] als Iteration zu arbeiten zum Durchlaufen der CSV-Datei sowie als Zähler für meine while-Schleife. Allerdings, wenn ich dies einrichten Ich erhalte eine Fehlermeldung für diese Zeile: if value> mathline [mL_ind]

Jede Hilfe sehr geschätzt

wäre
+1

könnte die Fehlermeldung anhängen, dank – heyu91

+0

Hier ist die Fehlermeldung: Indexerror: Listenindex außerhalb des zulässigen Bereichs –

+0

Versuch 'mL_ind = 0 'statt' mL_ind = 1' – heyu91

Antwort

0

Das ist was für mich ...

Import

csv
bigger = [] 
smaller = [] 
mL_ind = 1 

add = 0 
add_s = 0 

gross = [] 
largest_val = [] 
net_total = [] 

initial = open('dummy.csv') 
reader = csv.reader(initial) 


mathLine = [line.split(',')[1] for line in initial] 

print (mathLine) 


del mathLine[0] 
mathLine = list(map(float, mathLine)) 

for value in mathLine[:-1]: 
    if value > mathLine[mL_ind]: 
     bigger.append(value) 
     mL_ind += 1 
    elif value < mathLine[mL_ind]: 
     smaller.append(value) 
     mL_ind += 1 


for value in bigger: 
    add = value + add 

for value in smaller: 
    add_s = value + add_s 

total = add - add_s 
gross.append(total) 

largest = max(mathLine) 
largest_val.append(largest) 

net = total/largest 
net_total.append(net) 

print (net_total) 
+0

Ich habe versucht, und der gleiche Fehler kam auf: IndexError: Listenindex außerhalb des Bereichs –

+0

Korrigiert, siehe meine aktualisierte Antwort für den Zugriff auf die Liste aus dem zweiten Element anstelle des nullten Elements (seit Sie das nullte Element gelöscht). –

+0

vielleicht 'für den Wert in mathLine [: - 1]' – heyu91

Verwandte Themen