Создать учетную запись объекта - PullRequest
0 голосов
/ 03 ноября 2019

Моя программа создает объект Account с идентификатором счета 1122, балансом 20 000 долларов США и годовой процентной ставкой 4,5%. Он использует метод снятия для снятия 2500 долларов, метод депозита для внесения 3000 долларов и распечатывает идентификатор, баланс, месячную процентную ставку и ежемесячный процент.

У меня проблемы со следующей частью, которая заключается в том, что моя программаТакже следует запросить начальные значения для id, баланса и процентной ставки. Затем должно появиться меню, в котором пользователь может изменить свою учетную запись. После каждого выбора должно отображаться соответствующее сообщение. Затем меню должно отобразиться снова.

Пример меню:

(1): ID дисплея

(2): Баланс дисплея

(3): Показать годовую процентную ставку

(4): Показать месячную процентную ставку

(5): Показать месячную процентную ставку

(6): Снять деньги

(7): депозитные деньги

(8): выход

Как я могу изменить свой код для правильной работы с пользовательским вводом? Сейчас он работает, но у меня нет кода, который запрашивает у пользователя ввод.

У меня есть такой код:

main module:

from Account import Account

def main():
    updatedAccount = Account(1122,20000,4.5)
    updatedAccount.withdraw(2500)
    print("User ID : ", updatedAccount.id)
    print("Beginning Balance: ", updatedAccount.balance)
    print("Monthly Interest Rate: ", updatedAccount.monthly_interest_rate)
    print("Monthly Interest: ", updatedAccount.get_monthly_interest())

main()

Account.py

class Account:

    def __init__(self, id, initial_balance=0, rate=4.5):
        self.id = id
        self.balance = initial_balance
        self.annual_interest_rate = rate

    @property
    def monthly_interest_rate(self):
        return self.annual_interest_rate / 12

    def get_monthly_interest(self):
        return self.balance * self.monthly_interest_rate

    def withdraw(self, amount):
        if self.balance < amount:
            raise ValueError(f"Overdraft, balance less than {amount}")

        self.balance -= amount

    def deposit(self, amount):
        self.balance +=amount

Я попытался записать пользовательский ввод для начальных значений учетной записи, но у меня возникли проблемы с его использованием для создания объекта Account и способов реализации меню.

userid = float(input("Enter User ID: "))
InterestRate = float(input("Enter Interest Rate: "))
balance = float(input("Enter balance: "))

print("User ID is: ", userid)
print("Interest Rate: ", InterestRate)
print("Balance is: ", balance)

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Вам необходимо использовать конструктор Account и указать значения, которые у вас есть

userid = float(input("Enter User ID: "))   // maybe use int() rather than float ? 
interestRate = float(input("Enter Interest Rate: "))
balance = float(input("Enter balance: "))

acc = Account(userid, balance, interestRate)

print(acc)

Если вы переопределите метод __str__, вы можете напечатать объект, просто вызвав print(acc)

// in Account class
def __str__(self):
    return f"ID {self.id},Bal {self.balance}, Rat {self.annual_interest_rate}"

Простой способ для меню может быть следующим: заполните код if/elif в apply_actions и разместите их в том же порядке в массиве actions

def apply_actions(action, account):
    if action == 0:      # display ID
        print(f"Your id is {account.id}")
    elif action == 1:    # display balance
        print(f"Your balance is {account.balance}")
    # ...
    elif action == 6:
        to_deposit = float(input("How many money for the deposit ?"))
        account.deposit(to_deposit)
    elif action == 7:
        exit(1)
    else:
        print("Bad index")

if __name__ == '__main__':
    # ...
    acc = Account(userid, balance, interestRate)

    actions = ["Display ID", "Display Balance", "Deposit", "Exit"]
    while True:
        choice = int(input("Choose index in " + str(list(enumerate(actions)))))
        apply_actions(choice, acc)
0 голосов
/ 03 ноября 2019

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

userid = float(input("Enter User ID: "))
InterestRate = float(input("Enter Interest Rate: ")) 
balance = float(input("Enter balance: "))

user_account = Account(userid, balance, InterestRate)

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

def menu():
    possibilities = [(1, "Display ID", "id"), (2, "Display balance", "balance")]
    while True:
        for possibility in possibilities:
            print(f"({possibility[0]}): {possibility[1]}")
        User_input = int(input("Please select an option"))
         if User_input in [pos[0] for pos in possibilities]:
              option, name, attrib = [pos for pos in possibilities if pos[0] == User_input]
              print(getattrib(Account, attrib)) 
         else:
             print("Option not avaliable")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...