You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python初学者ATM项目:Withdraw后余额无法持久化问题求助

解决取款/存款后余额无法持久化的问题

问题核心是你只计算了操作后的新余额,但没有把这个值写回balance列表对应的位置,导致每次重新验证PIN后,程序读取的还是初始余额。

修改方案

只需要在取款和存款操作完成后,将计算出的新余额更新到balance列表中即可:

  • 取款成功后,执行 balance[pol] = difference
  • 存款完成后,执行 balance[pol] = sums

修改后的完整代码

pin = [123, 456, 789]
balance = [50000, 2000, 500]
name = ["name1", "name2", "name3"]


def main():
    while True:
        pin_input = input('Enter pin:')
        try:
            n = int(pin_input)
        except:
            break
        if n in pin:
            print('1 – Balance Inquiry')
            print('2 – Withdraw')
            print('3 – Deposit')
            print('X – Exit')
            choice = input('Enter your choice:')
            # 先判断退出选项,避免转换int报错
            if choice.upper() == 'X':
                print('Thank you for banking with us!')
                break
            try:
                c = int(choice)
            except ValueError:
                print('Invalid choice, please enter a number or X')
                continue
            pol = pin.index(n)
            if c == 1:
                print(f'Hi {name[pol]}.')
                print(f'Your current balance is {balance[pol]} ')
            elif c == 2:
                print(f'Hi {name[pol]}.')
                print(f'Your current balance is {balance[pol]} ')
                withdraw = int(input('Enter amount to withdraw: '))
                if withdraw > balance[pol]:
                    print('Not enough amount')
                else:
                    difference = balance[pol] - withdraw
                    balance[pol] = difference  # 更新余额到列表
                    print('Transaction Successful')
                    print(f'Your current balance is {difference}')
            elif c == 3:
                print(f'Hi {name[pol]}.')
                print(f'Your current balance is {balance[pol]} ')
                deposit = int(input('Enter amount to deposit: '))
                sums = deposit + balance[pol]
                balance[pol] = sums  # 更新余额到列表
                print('')
                print(f'Your current balance is {sums}')
            else:
                print('Invalid choice, please select 1, 2, 3 or X')

main()

额外优化了两处细节:

  1. 先判断X退出选项,避免把非数字的X强制转换为int时抛出异常
  2. 增加了输入无效选项时的错误提示,提升程序健壮性

内容的提问来源于stack exchange,提问作者raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:31:41