在Python上创建平衡表(已编辑)

2024-10-02 02:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码,显示我需要支付的学生贷款取决于不同的因素,但我想知道如何才能显示一个表格告诉我,例如。。。如果我的程序说我将支付36笔153.02美元的贷款,以6.4%的利息支付5000美元的贷款,我如何显示一个表格告诉我(153的付款1这是剩余的余额,这笔钱用于利息或本金支付,那么同样的付款2这个新的余额。。。等等……)换言之,是一张表格,告诉我这36笔付款,以及每次付款后我的余额是如何减少的。在

它不一定是一张表格也许只是一张单子。。。列出付款后付款,直到余额为0或-什么?在

这是到目前为止我使用python2.7.3编写的代码

def calcDebt (principal, interestRate, numPayments, freqPayment):
    #This code will make different predictions to pay off student loan
    #Input Meanings
    '''
    Inputs
    - interestRate  - The Interest Rate of a Loan
    - numPayments - The Number of Payments Needed
    - principal - The Original Student Loan Amount
    - freqPayment - Frequency of Payments Based on Weekly, Monthly, Annually
    Returns
    - paymentAmount - The Payment Amount Will Be
    '''

    freqPayment_lookup = {'weekly': 52, 'monthly':12, 'annually':1}
    interestRate = float(interestRate) / 100

    x = interestRate/freqPayment_lookup[freqPayment]
    y = (1.0 + x) ** numPayments
    z = x/(y - 1.0)
    paymentAmount = (x + z) * principal

    return paymentAmount
def main():
    a = input('Student Loan Amount: ')
    i = input('Student Loan Interest Rate: ')
    n = input('Number of Payments: ')
    f = None
    while f not in ['weekly', 'monthly', 'annually']:
        if f:
            f = raw_input('Sorry! That is NOT an Option. Please Enter weekly, monthly,    or annually: ').lower()
    else:
            f = raw_input('How Often Do You Want To Make Your Payments? ').lower()
    payment = calcDebt(a, i, n, f)
    print 'Your %s payment will be %.2f' % (f, payment)
if __name__ == '__main__':
    main()
    raw_input('Please Press Enter to Exit')

有什么想法吗?在


Tags: oftheprincipalinputamountstudent余额表格
1条回答
网友
1楼 · 发布于 2024-10-02 02:32:16

我想说最好的办法就是使用numpy!以下是您需要的代码类型的总体思路:

import numpy as np
#this creates your table with numPayments rows and 4 columns
numPayments = 40
row_index = range(1,numPayments + 1)
real_row_index = []
for i in row_index:
    real_row_index.append(str(i))
columns = ["payment number", "remaining balance", "interest amount", "principal amount"]
total_payments = np.chararray((numPayments,3), itemsize=20)
total_payments[:] = "none"
total_payments = np.insert(total_payments, 0, np.array((real_row_index)),1)
total_payments = np.insert(total_payments, 0, np.array((columns)),0)
for row in total_payments[1::,1::]: 
    #the 1 skips the lables so you don't mess with them
    #row[0] will be the number payment column
    #row[1] will be the remaining balance column
    #row[2] will be the interest amount column
    #row[3] will be the principal amount column

现在您已经在for循环中设置了一个表数组(我将不为您完成),您可以在函数中使用它来迭代,并且对于每次付款,将单元格设置为列的正确值。因此,如果您计算可变利息中的利息金额,只需将其放入for循环中,以使属于该利息的利息位于正确的位置:

^{pr2}$

兴趣是以与row相同的速度迭代,因此如果操作正确,它们应该匹配

相关问题 更多 >

    热门问题