誰かがレースに参加したときにネストされたforループがあります。私が持っている問題は、ユーザーが開催日にない日付を選択した場合、次の「公式」日付にそれらをプッシュしているということです。私はcsvファイルの日付のリストを持っており、それをよく読んでいます。私の問題は、ネストしたループがcsvファイルの開始点をインクリメントし続けることです。ネストされたループが0から始まらない
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()
ブレークは、ループの開始位置をテストするためだけに2番目のループにあります。私はこのコードを実行するたびに、私は次を得る:
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
だから、最初のループは5日付で起動し、正しく細かいそれらをフォーマットします。しかし、2番目のものはそれが始まる行を増やし続けているのですが、私はなぜそれが分かりませんか?
? 'for'ループを入力するたびに' num'が0で始まると思いますか?毎回csv列挙を再開しますか? – tdelaney
私はnumが0で始まることを望んでいます。誰かが最近参加すると、最初の数日はスキップされません。 – lostAstronaut