Home > Net >  Python while loop continues beyond the while condition
Python while loop continues beyond the while condition

Time:01-11

My while loop doesn't stop when it's supposed to. Obviously there's something fundamental I'm missing here.

Here is my code:

import time
import datetime
import pandas as pd
period = 5
start = pd.to_datetime('2022-01-01')
end_final = pd.to_datetime('2022-01-31')
sd = start
while start < end_final:
    ed = sd   datetime.timedelta(period)
    print('This is the start of a chunk')
    print(sd)
    print(ed)
    print('This is the end of a chunk')
    print(' *************************')
    sd = ed   datetime.timedelta(2)

which prints dates until the 10th of April 2262 and then gives me the error:

 OverflowError: Python int too large to convert to C long

But the while loop should stop at the end of January 2022. Any ideas?

CodePudding user response:

You are changing sd variable but checking the start, try:

sd = start
while sd < end_final:
    # ...

CodePudding user response:

when you're in a "while loop" you must add a stop indicator, like a flag, condition, or break statement.

here's an idea to break the looping close to january 2022.

period = 5
start = pd.to_datetime('2022-01-01')
end_final = pd.to_datetime('2022-01-31')
sd = start
flag = True
while flag:
    ed = sd   datetime.timedelta(period)
    print('This is the start of a chunk')
    print(sd)
    print(ed)
    print('This is the end of a chunk')
    print(' *************************')
    sd = ed   datetime.timedelta(2)
    if sd >= end_final:
        flag = False

However, the ending date it's not 31/january/2022, because you're adding the period = 5, so in that case try with "if" statements.

  • Related