我正在尝试创建一个程序来:
- 随机生成账户余额;
- 评估该余额是否符合最低余额要求10;
- 如果是这样,请打印一个字符串,说明"不收取最低余额费用",或;
- 如果没有,则评估罚款10,并在罚款后打印净余额。
这是我的代码:
from random import randint
class calculate(object):
def __init__(self, account_balance):
self.account_balance = account_balance
def applycharge(self):
account_balance = self.account_balance
if account_balance < 10:
print "Minimum balance charges of $10 apply."
account_balance = account_balance - 10
print account_balance
return account_balance
else:
print "No minimum balance charges apply."
def printbalance(self):
account_balance = self.account_balance
print "The net account balance is: %d" % account_balance
initial_balance = randint(-100, 100)
print "The account balance before charges is: %d" % initial_balance
getcharge = calculate(initial_balance)
getcharge.applycharge()
getcharge.account_balance()
当我运行它时,这是我得到的示例:
The account balance before charges is: -74
Minimum balance charges of $10 apply.
-84
The net account balance is: -74
所以,一切都很好,直到最后一行。 (当随机生成的余额不低于 10 时,一切也正常,这会导致罚款被评估。
注意 - 我只把打印语句放在显示倒数第二行 (-84
( 的语句中,以检查到目前为止一切是否正常。
当我想显示"净账户余额"时,问题就出现了。我显然是在显示原始余额,在评估 10 的罚款之前。
我假设在罚款后如何返回余额并将其传递给"打印平衡"方法存在问题。或者不通过它,就像情况似乎一样。 或者,这可能与调用"printbalance"时使用原始全局变量有关,而不是我正在尝试做的事情,即更改该值,返回它,然后显示它。
我写这一小段代码的全部目的是锻炼我的大脑传递变量,并尝试充实我不理解的内容。任务完成。
我将就此打住,因为我的解释即将变得像我现在的大脑一样纠结于意大利面碗胡言乱语,但我希望这能提供足够的信息来明确我想要完成的目标。
我确实看了其他措辞相似的问题/答案,但我似乎无法从中得到答案。
最后,我确信这里有各种各样的错误 - 我只编程(或尝试(大约三周。
您只返回新余额,但随后忽略返回的值,也没有在实例上设置新值。
因此,您返回的account_balance
值只会丢失、忽略。
您可能想要更新属性,以便getcharge.printbalance()
打印更新的值:
def applycharge(self):
account_balance = self.account_balance
if account_balance < 10:
print "Minimum balance charges of $10 apply."
self.account_balance = account_balance - 10
else:
print "No minimum balance charges apply."
我删除了返回行;calculate
类的getcharge
实例负责跟踪帐户余额值。