Ich habe eine verschachtelte For-Schleife für wenn jemand das Rennen betritt. Das Problem, das ich habe, ist, dass, wenn ein Benutzer ein Datum auswählt, das nicht an den Daten gehalten wird, ich sie zum nächsten "offiziellen" Datum dränge. Ich habe eine Liste von Daten in einer CSV-Datei und ich lese es gut. Mein Problem ist, dass meine Nested-Schleife den Startpunkt in der CSV-Datei erhöht.Verschachtelte Schleife nicht bei 0 beginnend
import csv, time
from datetime import date, timedelta
class RunDates():
def __init__(self):
self.enterDate = '4/12/14'
self.reader = csv.DictReader(open('dates.csv', 'rb'))
def findRunDate(self):
# Get the row of entered date or next closest
csvlist = enumerate(self.reader)
for i in range(5):
t = time.strptime(self.enterDate, '%m/%d/%y')
newdateArr = (date(t.tm_year, t.tm_mon,t.tm_mday)+timedelta(days=i)).strftime('%m/%d/%y').split('/')
newdateStr = '/'.join([str(int(newdateArr[0])), str(int(newdateArr[1])), newdateArr[2]])
print newdateStr, i
for num, row in csvlist:
print row['Date'], num
break
if newdateStr == row['Date']:
print 'Row Number: ' + str(num)
print 'Row Date: ' + row['Date']
print 'new Date: ' + newdateStr
break
else:
pass
#Testing
a = RunDates()
a.findRunDate()
Die Pause ist in der zweiten Schleife, nur um zu testen, wo die Schleife beginnt. Jedes Mal, wenn ich diesen Code ausführen bekomme ich folgendes:
4/12/14 0
4/29/16 0
4/13/14 1
4/28/16 1
4/14/14 2
4/27/16 2
4/15/14 3
4/26/16 3
4/16/14 4
4/25/16 4
So die erste Schleife kommt mit 5 Termine und korrekt formatiert sie in Ordnung. Aber der zweite erhöht die Reihen immer weiter und ich weiß nicht warum?
Was Sie passieren wollen ? Erwarten Sie, dass 'num' bei jedem Aufruf der' for'-Schleife bei 0 beginnt? Soll die csv-Enumeration jedes Mal neu gestartet werden? – tdelaney
Ich möchte, dass num jedes Mal bei 0 beginnt, also wenn jemand vor kurzem beitreten würde, würden die ersten Daten nicht übersprungen werden. – lostAstronaut