我不太熟悉Python,但我正在尝试创建一个程序,该程序可以接收文件名,工作表名称,每月付款,用户每月额外付款和本金贷款金额。然后,程序应使用提交的名称创建一个Excel文件,并使用提交的名称创建一个工作表。在Excel工作表中,开始从余额中减去每月付款,将其写入excel工作表并计算付款日期,然后对额外金额执行相同的操作并继续重复,直到余额达到0。我已经使用递归执行此操作,但我得到以下错误zsh: segmentation fault python3 loanPayoff.py以下是我的代码: import datetimeimport xlsxwriterimport syssys.setrecursionlimit(10**6)# we create the workbookdef createWorkBook(workBookName, workSheetName, monthly, principal, additional, date): #creating the workbook workbook = xlsxwriter.Workbook(workBookName + '.xlsx') worksheet = workbook.add_worksheet(workSheetName) worksheet.write('A1', 'Date') worksheet.write('B1', 'Mortgage principal amount') worksheet.write('C1', 'Regular amount against principal') worksheet.write('D1', 'Against principal additional') payments(monthly, additional, principal, worksheet, 'regular', date, 1) workbook.close()# update the workbook's worksheet with the next datedef workBookUpdateDate(date, row, workSheet): dateColumn = 0 workSheet.write(row, dateColumn, date)# update the workbook's worksheet with the new balancedef workBookUpdateBalance(balance, row, workSheet): balanceColumn = 1 workSheet.write(row, balanceColumn, balance)# update the workbook's worksheet with the regular amount being paiddef workBookUpdateRegularAmount(regularAmount,row, workSheet): regularAmountColumn = 2 workSheet.write(row, regularAmountColumn, regularAmount)# update the workbook's worksheet with the additional amount being paiddef workBookUpdateAdditionalAmount(additionalAmount,row, workSheet): additionalAmountColumn = 3 workSheet.write(row, additionalAmountColumn, additionalAmount)# increment the date by two weeksdef addTwoWeeksToDate(date): twoWeeks = datetime.timedelta(days=14) newDate = date + twoWeeks #print("DATE ......", format(newDate)) return newDate
2 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
我假设你的问题是递归限制的变化
从此链接: https://bugs.python.org/issue35542
https://docs.python.org/3/library/sys.html#sys.setrecursionlimit
可能的最高限制取决于平台。当用户具有需要深度递归的程序和支持更高限制的平台时,可能需要将限制设置得更高。这应该小心完成,因为过高的限值会导致崩溃。
我认为这是一个已知的情况,在设置更高的递归限制时,在可以提高递归错误之前,堆栈限制被击中取决于操作系统。在我的机器(Mac 10.10.4)上,这在2.7上是segfault,但在Python 3.7.1上提高了递归错误。将限制增加到 200000 会导致在 3.7.1 上使用 segfault。
当年话下
TA贡献1890条经验 获得超9个赞
蟒蛇在正常情况下不会“赛格v”。关于你的Python安装的一些东西坏了。您应该尝试将其替换为全新安装。
另外,以你的方式递归有点奇怪。您可以将其编写为迭代运行,并且更清晰。
添加回答
举报
0/150
提交
取消