函数

时间:2015-05-13 08:17:02

标签: python-3.x

好的,我需要创建更新(全局变量)银行帐户的内容。我的指示如下:

def setBalance(amt):     # Defines (but doesn't print) the value of the account balance
def printBalance():      # Displays current balance as a money value with a heading
def printLedgerLine(date, amount, details):  # with items (and the balance) spaced and formatted
def deposit (date, details, amount):  # Alter the balance and print ledger line     
def withdraw(date, details, amount): # Alter the balance and print ledger line

所以,当我做这样的事情时;

deposit ("23-12-2012",  "Income", 225)
withdraw("24-12-2012", "Presents", 99.02)
printBalance()

它会回来;

23-12-2012  Income              $  225.00       $  575.01
24-12-2012  Presents            $   99.02       $  475.99
Current Balance is $  475.99

我不知道该怎么做。目前我正在定义printLedgerLine以获取信息并使用标签打印它以使其看起来不错。 然后我在撤回或存款中调用它,并尝试在最后打印(新)余额。

def deposit(date, details, amount):
    global balance
    balance = float(balance) + float(amount)
    printLedgerLine(date,amount,details)
    print(str(balance)

这可以工作但是在不同的行上打印它们,因为调用该函数会打印它,然后打印出余额。如果我改变最后两行

 print(printLedgerLine(date,amount,details),str(balance))

然后它打印无余额

我是否应该返回printLedgerLine,但如果我这样做,我将如何格式化'它没有印刷?令人沮丧,感觉它就在那里,我会感到很尴尬! 对不起长期困惑的问题,很难解释你的业余爱好者! 谢谢

2 个答案:

答案 0 :(得分:2)

而不是print(printLedgerLine(date,amount,details),str(balance))

您可以将printLedgerLine更改为getLedgerLine并使其返回值,例如

def getLedgerLine(date, amount, details):
    return '{0}\t{1}\t{2}'.format(date, amount, details)

然后使用

print('{0}\t{1}'.format(printLedgerLine(date,amount,details),str(balance)))

或者您可以替换整个printLedgerLine函数:

def deposit(date, details, amount):
    global balance
    balance = float(balance) + float(amount)
    print('{date}\t{amount}\t{details}\t{balance}'.format(
        date=date,
        amount=amount,
        details=details,
        balance=balance
    ))

答案 1 :(得分:1)

在没有看到printLedgerLine功能的情况下很难说出究竟是什么问题,但是根据您的问题,您似乎只打印日期,详细信息和金额而没有最终余额,并在{{1而代之以{}}和deposit

相反,您应该将其移至withdraw,然后在printLedgerLinedeposit中调用该功能。像这样:

withdraw