好的,我需要创建更新(全局变量)银行帐户的内容。我的指示如下:
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,但如果我这样做,我将如何格式化'它没有印刷?令人沮丧,感觉它就在那里,我会感到很尴尬! 对不起长期困惑的问题,很难解释你的业余爱好者! 谢谢
答案 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
,然后在printLedgerLine
和deposit
中调用该功能。像这样:
withdraw