Python返回并传递变量

时间:2017-07-28 20:57:25

标签: python class object parameters global-variables

我正在尝试创建一个程序:

  1. 随机生成帐户余额;
  2. 评估该余额是否满足10的最低余额要求;
  3. 如果是,请打印一个字符串,说明“不适用最低余额费”,或;
  4. 如果没有,则罚款10并在罚款后打印净余额。
  5. 这是我的代码:

    destroy

    当我运行它时,这是我得到的一个例子:

    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()
    

    所以,在最后一行之前一切正常。 (当随机生成的余额不低于10时,一切也都可以,这会导致罚款被评估。)

    注意 - 我只是将print语句显示在倒数第二行(The account balance before charges is: -74 Minimum balance charges of $10 apply. -84 The net account balance is: -74 )中,以检查一切是否正常。

    当我想显示“净帐户余额”时出现问题。在评估罚款10之前,我显然显示了原始余额。

    我认为在罚款之后如何返回余额并将其传递给“printbalance”方法存在问题。或者没有通过它,就像这样。或者,这可能与调用“printbalance”时使用原始的全局变量有关,而不是我正在尝试做的事情,即更改该值,返回它然后显示它。

    我写这一小段代码的全部意义在于运用我的大脑来传递变量,并试图充实我理解的东西。任务完成。

    我要停在那里,因为我的解释是要像我现在的大脑那样变得像意大利面一样乱糟糟的,但我希望这能提供足够的信息来说明我想要完成的事情。

    我确实看过其他类似措辞的问题/答案,但我似乎无法从中得到答案。

    最后,我确定这里有各种各样的错误 - 我只是编程(或尝试)大约三个星期。

1 个答案:

答案 0 :(得分:0)

您只能返回新余额,但随后会忽略返回的值,也不会在您的实例上设置新值。

因此,您返回的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."

我删除了返回线; getcharge班级的calculate个实体负责跟踪帐户余额值。