用Python制作一个存钱罐程序

-2 投票
3 回答
7493 浏览
提问于 2025-04-18 13:37

我刚开始学习Python和编程,想做一个简单的储蓄罐,可以存入或取出一分、五分、十分和二十五分的硬币。我不知道怎么让代码循环,也不知道怎么存储数据,以便在我放入硬币后能一直累加储蓄罐里的硬币总数。我现在只能做到运行代码后告诉我,比如我放入100个一分硬币,储蓄罐里有100个一分硬币,但之后数据就会重置。我该怎么做呢?我的代码可能很糟糕,但这是我根据目前对Python的了解写的(我添加了一些空白部分,比如“return”和pennies_previous,以便任何阅读的人都能理解我的思路,withdrawstep()函数还没有添加):

print "Welcome to the Piggy Bank!"

def depositstep(): 
    deposit = raw_input("What would you like to deposit? (P for pennies, N for nickels, D for dimes, Q for quarters): ").upper() 

    if deposit == 'P':
        pennies_previous = 
        pennies_instance = raw_input("How many pennies would you like to deposit?: ")
        pennies_total = int(pennies_instance) + pennies_previous 
        print "There are %s pennies in your bank"% (pennies_total)
        return execute()

    elif deposit == 'N':
        N = raw_input("How many nickels would you like to deposit?: ")
        return 

    elif deposit == 'D':
        D = raw_input("How many dimes would you like to deposit?: ")
        return 

    elif deposit == 'Q':
        Q = raw_input("How many quarters would you like to deposit?: ")
        return 

    else:
        return "Sorry. Please Type P for pennies, N for nickels, D for dimes, or Q for quarters."

def execute():
    exc = raw_input("Would you like to deposit or withdraw money? (D for deposit, W for withdraw): ").upper()

    if exc == 'D' or exc == 'DEPOSIT':
        return depositstep()                        

    elif exc == 'W' or exc == 'WITHDRAW':
        return withdrawstep()

    else:
        return "Sorry. Please type D for deposit or W for withdrawal." 

print execute()

3 个回答

0

我建议用Python的字典来代替变量:

可以这样做:

bank = {'pennies':0, 'nickles':1, 'dimes':0, 'quarter':0}

如果你想增加其中的某个值,可以这样做:

bank['pennies'] += int(pennies_instance) # not need the pennies_previous

然后你需要把这些数据写入一个文件,你可以这样做:

f = open('filename','w') 
f.write(bank.items())
f.close

不过这样写不会保留Python的结构。不过你可以使用json模块,用起来很简单:

import json

f = open('filename','wb')
json.dump(bank,f)
f.close()

在脚本开始时,你需要从文件中获取数据,可以这样做:

f = open('bank.dat','rb')
bank = json.load(f)

看起来会是这样的:

import json

f = open('bank.dat','rb')
bank = json.load(f)
f.close()

## you code goes here.

f = open('bank.dat','wb')
json.dump(bank,f)
f.close()

你的代码中还有其他一些问题需要解决。

1) 在代码的'else'部分,如果用户输入了错误的字母,程序就会终止,其实应该让它重新调用这个函数。

2) 你不需要在'print execute()'中返回一个字符串并打印出来,你可以直接在那儿打印,而不返回任何东西。

0

如果你想让银行在每次会话中都能记住它的值,那你就需要把银行的值保存到一个文件里。你可以这样做:

  1. 首先,创建一个文件,名字可以叫 bankvalue.txt。
  2. 然后,在每次返回值之前,添加这些代码:
value = open(bankvalue.txt, 'w') # that opens your bankvalue.txt file in write mode
value.write('\n'pennies_previous) #You should use the answer above for the pennies_previous
value.close() #saves the file

3. 接着,为了告诉用户他们的余额,你可以使用 readline() 这个函数。

希望这正是你想要的内容。

0

你应该把你所有的便士总数保存在原来的变量里。可以这样写:pennies_previous = int(pennies_instance) + pennies_previous,这样便士的总数就会保存在这里。

撰写回答