找回密码
 立即注册
首页 python python-基础 查看内容

在“ATM”程序中使用什么方法


我开始为ATM代码分配,我应该以某种方式使用文本文件。到目前为止我有这个:
print("Hello, and welcome to the ATM machine!\n")

a_pin = {1111, 2222, 3333, 4444}

def process():
    pin = int(input("\nplease enter below your 4-digit pin number: "))
    if pin in a_pin:
        if pin == (1111):
            f = open("a.txt", "r")
        elif pin == (2222):
            f = open("b.txt", "r")
        elif pin == (3333):
            f = open("c.txt", "r")
        elif pin == (4444):
            f = open("d.txt", "r")
        print(
    """
        MENU:
        1: view your current balance
        2: make a withdraw
        3: make a deposit
        4: exit

     """)

        option = input("\nwhat would you like to do? ")

        if option == "1":
            print(f.read())
        elif option == "2":
            y = str(input("\nHow much would you like you like to withdraw? "))
            f.write(y)
            print("Excellent, your transaction is complete!")
        elif option == "3":
            z = str(input("\nHow much would you like to deposit? "))
            f.write(z)
            print("Excellent, your transaction is complete!")
        elif option == "4":
            input("Please press the enter key to exit.")



    else:
        print("\nthat was a wrong pin number!")
        x = input("\nwould you like to try again? '(y/n)' ")
        if x == "y":
            process()
        else:
            input("\npress the enter key to exit.")

process()


代码现在起作用,但我想通过询问如何在撤销/存款时最有效地覆盖文本文件上的内容来节省一些时间。我正在考虑腌制文件......但是对于任何建议都会非常高兴,因为像写这样的正常命令实际上不适用于此任务,如果我想在撤销/存款后向用户显示新的ammount。非常感谢!

解决方法


关键是要考虑必要的“模式”来打开文件,这样它不仅可以被阅读(r)而且还可以被修改(r+):
if pin == (1111):
        f = open("a.txt", "r+")
    elif pin == (2222):
        f = open("b.txt", "r+")
    elif pin == (3333):
        f = open("c.txt", "r+")
    elif pin == (4444):
        f = open("d.txt", "r+")


然后将当前余额存储在文件中,并在每次事务后更新它。
# read current balance from file and save its value
bal = float(f.read().strip('\n'))  # or replace float() with int()

# reset file pointer to beginning of file before updating contents
f.seek(0)

if option == '1':
    print(f.read()) # or simply, print(bal)
elif option == '2':
    y = str(input("\nHow much would you like you like to withdraw? "))
    bal -= int(y)            # calculate new balance
    f.write(str(bal)+'\n')   # write new balance to file as a string
    print("Excellent, your transaction is complete!")
elif option == '3':
    z = str(input("\nHow much would you like to deposit? "))
    bal += int(z)
    f.write(str(bal)+'\n')
    print("Excellent, your transaction is complete!")

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册