[Tutor] Need all values from while loop - only receiving one
Daryl Heppner
darylheppner at gmail.com
Mon Jul 2 16:06:47 EDT 2018
Hi folks,
I'm trying to calculate the amount of rent per lease for the life of
the lease, by month. The following code provides the correct results
except for the monthnum and billper. Monthnum is intended to show the
month within the lease and the billper should list each date for rent
billing.
For example, if the lease commences May 1, 2018 for a 60 month term,
2018-05-01 is monthnum = 1 and the billper = 2018-05-01. The
following 59 rows needs to increment the monthnum and billper values
by 1.
The while loop (below) returns the first value correctly but stops
without continuing through the rest of the True matches.
Code (see below for results):
import xml.etree.ElementTree as ET
import pyodbc
import dateutil.relativedelta as rd
import dateutil.parser as pr
tree = ET.parse('DealData.xml')
root = tree.getroot()
for deal in root.findall("Deals"):
for dl in deal.findall("Deal"):
dealid = dl.get("DealID")
for dts in dl.findall("DealTerms/DealTerm"):
dtid = dts.get("ID")
dstart = pr.parse(dts.find("CommencementDate").text)
dterm = dts.find("LeaseTerm").text
darea = dts.find("RentableArea").text
for brrent in dts.findall("BaseRents/BaseRent"):
brid = brrent.get("ID")
begmo = int(brrent.find("BeginIn").text)
if brrent.find("Duration").text is not None:
duration = int(brrent.find("Duration").text)
else:
duration = 0
brentamt = brrent.find("Rent").text
brper = brrent.find("Period").text
perst = dstart + rd.relativedelta(months=begmo-1)
perend = perst + rd.relativedelta(months=duration-1)
billmocount = begmo
while billmocount < duration:
monthnum = billmocount
billmocount += 1
billmo = perst
while billmo < perend:
billper = billmo
billmo += rd.relativedelta(months=1)
if dealid == "706880":
print(dealid, dtid, brid, begmo, dstart, dterm,
darea, brentamt, brper, duration, perst, perend, \
monthnum, billper)
Results:
706880 4278580 45937180 1 2018-01-01 00:00:00 60 6200 15.0 rsf/year 36
2018-01-01 00:00:00 2020-12-01 00:00:00 35 2020-11-01 00:00:00
706880 4278580 45937181 37 2018-01-01 00:00:00 60 6200 18.0 rsf/year
24 2021-01-01 00:00:00 2022-12-01 00:00:00 35 2022-11-01 00:00:00
Any help is appreciated!
Thank you,
Daryl
More information about the Tutor
mailing list