Проект Python — банкинга с тестовыми случаями

#python #oop

Вопрос:

Я новичок в программировании и только начал свой курс программирования. Мы рассматриваем ООП, и я борюсь с банковским проектом.

В принципе, нам были предоставлены тестовые примеры, чтобы проверить, правильно ли работает наш код. Нам придется написать свои собственные тестовые примеры для второй части проекта.

Моя текущая проблема с данными тестовыми случаями заключается в том, что я не могу пройти один из последних тестов, который проверяет успешный метод передачи.

Я написал свой метод перевода, протестировал его в своем модуле банковского счета и, похоже, делаю то, что ожидается: снимаю деньги со счета 1 и перемещаю их на счет2. Тем не менее, тестовый случай все еще не удался.

Насколько я могу видеть, в тестовом примере рассматриваются следующие 3 условия: баланс счета на снятом счете, баланс счета на внесенном счете и переведенная сумма.

Есть идеи, не упускаю ли я здесь чего-нибудь?

Ниже приведены мои способы внесения депозита и перевода

 #Method to process money deposits. Receives deposit_amount variable (float) and return class variable account_balance incremented by deposit amount
def deposit (self,deposit_amount):
    self.account_balance  = deposit_amount


#Method to make money transfers. Receives account (obj) and amount_transferred (float) arguments. Returns amount of money transferred if
#enough funds, otherwise returns None

def transfer (self, account, amount):
    if amount > 0 and amount <= account.account_balance:
        self.account_balance -= amount
        account.deposit(amount)
    else:
        return None
 

Теперь ниже приведен тестовый пример для проверки успешной передачи

 # Test BANK_ACCOUNT_TEST_7: Tests transfer method for success.
amount_transferred = account_1.transfer(account_2, 20.0)
if account_1.get_balance() != 40.65 or account_2.get_balance() != 50.0 or amount_transferred != 20.0:
    print('FAILED BANK_ACCOUNT_TEST_7')
    return 7
 

Я провел несколько испытаний и все еще получаю НЕУДАЧНЫЙ BANK_ACCOUNT_TEST_7.

Комментарии:

1. Когда вы пишете: amount_transferred = account_1.transfer(account_2, 20.0) кажется, что вы ожидаете transfer() вернуть переведенную сумму, но это не так.

2. Лучший банк Я готов открыть в нем новый счет и попрошу других совершить транзакцию .. этот банк для богатых людей, он всегда будет терпеть неудачу, если на моем счете меньше суммы, Безумный банк XD никто не может дать мне денег. 😂

3. ваша сумма, если условие неверно, соответствует сумме

Ответ №1:

Проверьте свою логику передачи .. См. Обновленную логику .. Предложение: Попробуйте использовать метод getter setter вместо прямого использования объектной переменной. (не использовал геттер-сеттер в текущем soln.)

 def transfer (self, account, amount):
    if amount > 0 and amount <= self.account_balance:
        self.account_balance -= amount
        account.deposit(amount)
        return amount
    else:
        return None
 

Комментарии:

1. Большое спасибо! У меня было много проблем, пытаясь понять в рамках метода, когда использовать self.account_balance и когда использовать account.account_balance. Я знаю, что это может показаться глупым, но мне трудно понять эти 2 концепции и как их правильно использовать.

2. @CristianA : пример рассмотрим коробку, созданную фабрикой. Информация о коробке в этой коробке несколько полок … Теперь класс-это вся ваша информация о коробке, о том, как будет выглядеть коробка, о ее функциях ( например, о заводских машинах сборочной линии) {схема простого слова} . Теперь, когда вы создаете новый объект, это означает, что вы создали новую коробку с теми же функциями, которые нам велено создать. Как box может получить доступ к своим функциям с помощью self(простыми словами означает «мой/мой»). Когда вы используете self, вы говорите, что box может получить доступ ко всему, что ему принадлежит.(мое ) (игнорируйте грамматические ошибки)