<p>当程序运行时,它们使用的任何变量都存储在ram中,每当您关闭程序时,ram就会丢失。如果您希望在运行程序的两次之间存储数据,则需要将它们保存到文件中</p>
<p>幸运的是,python有一些非常有用的函数来实现这一点</p>
<p>您的代码看起来非常整洁,可以正常工作,我们只需要添加文件读写</p>
<p>首先,您需要打开我们用来存储总数的文件,使用带有<code>"r"</code>的读取模式</p>
<pre><code>file = open("total.txt", "r") # open the file in read mode
data = file.readline() # read the line
total = int(data) # get the total as an int
</code></pre>
<p>但是,当您第一次运行该程序时,该文件将不存在(因为我们还没有创建),并且总数将为0。我们可以使用<code>try</code>块来捕捉这个信息,并使用<code>"w+"</code>模式创建一个新文件,如果不存在具有该名称的文件,该模式将创建一个新文件</p>
<pre><code>total = int()
try: # try open the file
file = open("total.txt", "r")
data = file.readline()
total = int(data)
except: # if file does not exist
file = open("total.txt", "w+") # create file
total = 0 # this is the first time we run this so total is 0
file.close() # close file for now
</code></pre>
<p>然后你可以运行你的代码,在我们想要存储新的总数之后,这次在写模式下打开文件<code>"w"</code>,这将从文件中删除旧的总数</p>
<pre><code>file = open("total.txt", "w") # wipe the file and let us write to it
file.write(str(total)) # write the data
file.close() # close the file
</code></pre>
<p>现在,下次运行程序时,它将加载此总数,并将正确相加</p>
<p>都在这里</p>
<pre><code>def money_earnt():
total = int()
try: # try open the file
file = open("total.txt", "r")
data = file.readline()
total = int(data)
except: # if file does not exist
file = open("total.txt", "w+") # create file
total = 0
file.close() # close file for now
while True:
try:
pay_this_week = int(input("How much money did you earn this week? "))
break
except ValueError:
print("Oops! That was no valid number. Try again...")
pay_this_week_message = "You've earnt £{0} this week!".format(pay_this_week)
total = pay_this_week + total
total_message = "You have earned £{0} in total!".format(total)
print(pay_this_week_message)
print(total_message)
file = open("total.txt", "w") # wipe the file and let us write to it
file.write(str(total)) # write the data
file.close() # close the file
money_earnt()
</code></pre>