在基于 "ATM" 的程序中使用什么方法
What method to use in "ATM" based program
我已经开始分配 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()
代码目前有效,但我想通过询问 withdrawing/depositing 时如何最有效地覆盖文本文件上的内容来节省一些时间。
我在考虑 pickled 文件……但是我会很高兴收到任何建议,因为如果我想在 withdraw/deposit 之后向用户显示新的 ammount,那么像 write 这样的普通命令对这个任务真的不起作用。
非常感谢!
重点是考虑必要的"mode"打开文件,这样既可以读取(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!")
如果你只保留最新的余额,尝试以w+模式打开文本文件,读取整行并将值保留在你的程序中,随意修改它最后写入结束值并添加行尾。如果每次 运行 程序都应该更新该值。
我已经开始分配 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()
代码目前有效,但我想通过询问 withdrawing/depositing 时如何最有效地覆盖文本文件上的内容来节省一些时间。 我在考虑 pickled 文件……但是我会很高兴收到任何建议,因为如果我想在 withdraw/deposit 之后向用户显示新的 ammount,那么像 write 这样的普通命令对这个任务真的不起作用。 非常感谢!
重点是考虑必要的"mode"打开文件,这样既可以读取(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!")
如果你只保留最新的余额,尝试以w+模式打开文本文件,读取整行并将值保留在你的程序中,随意修改它最后写入结束值并添加行尾。如果每次 运行 程序都应该更新该值。