Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在While语句末尾的incrementor没有启动_Python - Fatal编程技术网

Python 为什么在While语句末尾的incrementor没有启动

Python 为什么在While语句末尾的incrementor没有启动,python,Python,我想在while循环中嵌套for语句。但是,在下面的示例中,变量d在for语句完成后不会增加一天。我通过在屏幕上打印d来确定这一点 while d <= end: for row in reader: rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y") if row[1] == offer and rowDate == d: rowList.append("1")

我想在while循环中嵌套for语句。但是,在下面的示例中,变量d在for语句完成后不会增加一天。我通过在屏幕上打印d来确定这一点

while d <= end:
    for row in reader:
        rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y")
        if row[1] == offer and rowDate == d:
            rowList.append("1")
    d += datetime.timedelta(days=1)

而d
csv.reader
返回一个生成器。一旦你翻过它,它就被消耗掉了。如果不重新实例化它,就不能迭代它两次。那是因为一般来说,你不需要重复一遍。您可以像这样重写代码:

for row in reader:
    rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y")
    if row[1] == offer and start_date<=rowDate<=end_date:
        # start_date and end_date are datetime objects
        rowList.append("1")
读取器中的行的
:
rowDate=datetime.datetime.StrTime(第[0]行,%m/%d/%Y”)

如果行[1]==offer和start\u date如果while循环只运行一次,则表明
d==end
…读卡器是否有行?rowList和rowDate如何看待每一个的结尾?在增量之后打印(在循环中)。你看到了什么?:)@Interrobang I验证了d的起始值小于结束值如果
读取器
是一个
csv.reader
或类似的读取器,您只能对其迭代一次。您需要在
while
循环中的每次迭代中重新实例化它。
for row in reader:
    rowDate = datetime.datetime.strptime(row[0], "%m/%d/%Y")
    if row[1] == offer and start_date<=rowDate<=end_date:
        # start_date and end_date are datetime objects
        rowList.append("1")