我必须创建一个ATM样式程序,其代码如下所示:
import sys
def ATM():
bank = 0
coins = int (input ("Enter coins: "))
bank = coins+bank
o = input("would you like to take out 20p? Y or N")
if o == "Y":
bank = bank - 20
else:
print ("your balance is {0}".format(bank))
op = input ("would you like to enter more coins? Y or N")
if op == "Y":
ATM()
else:
print ("goodbye")
sys.exit()
ATM()
有没有办法让本地变量银行从程序结束时保持它的价值?我需要切换bank = 0? 编辑:找到一个解决方案,谢谢所有提出一些建议的人
答案 0 :(得分:1)
您可以使用pickle,也可以将数据保存到.txt文件中;
#codes
....
with open("my_database.txt","a+") as f:
f.write(str(bank))
因此,您可以将bank
数据保存在文件中。如您所见,我们以a+
模式打开文件,但不会覆盖您的文件。
答案 1 :(得分:0)
您可以挑选数据,请在此处阅读:https://docs.python.org/2/library/pickle.html
或者,由于pickle对复杂数据结构更有帮助,请在SO上查看此问题:Python, writing an integer to a '.txt' file
使用Alex链接中给出的示例:
number = 1337
f = open('filename.txt', 'w')
f.write('%d' % number)
f.close()
这意味着您每次程序启动时都会检索该值,并在退出时保存它。
答案 2 :(得分:-1)
您有两个主要选项,为您的程序创建一个主循环而不是调用相同的函数,或者您可以传递参数。看起来你是编程的新手,所以我会为你解释一下:
while循环基本上是代码块,它会反复重复,直到某个条件完成。它们看起来像这样:
exit = False
while exit != True:
print "Hello!"
exit = True
特定的循环只运行一次,因为我们在第一次迭代中将exit设置为True。但是,如果我们把这条线拿走,它会一直运行,直到程序爆炸或我们手动关闭它。
所以一个解决方案可能是这样的:
def ATM():
exit = False
while exit != True:
normal logic you are doing
if op = 'N':
exit = True
sys.exit()
另一种解决方案是将参数传递给ATM()。传递参数基本上是一种在函数运行之前为函数设置变量的方法,这使您能够在外部函数中设置事物。例如:
def foo():
my_var = "test"
bar("test")
def bar(another_var)
print another_var
这将打印" test",即使该变量是在与调用print的函数分开的函数中定义的。我们基本上将my_var变量传递给bar()函数,该函数将其设置为供我们使用。所以你可以这样做:
my_var = 123
def ATM(some_var):
do stuff
if exit == False:
ATM(some_var)
else:
sys.exit()
首先使用它,如果您有任何问题,请告诉我。