Python面向对象编程2-面向过程的银行账号模拟程序 项目2.2 取款与查看余额

news2024/11/24 19:45:48

项目总目标:用面向过程思想设计一个简单的银行账号模拟程序。本次将迭代多个程序版本,每个版本都将添加更多功能。虽然这些程序没有达到发布的质量标准,但整个项目的目的是关注于代码如何与一个或多个银行账户的数据进行交互。

分析项目的必要操作和数据: 

客户对银行账户的操作包括 创建账户;存款,取款,查询余额

银行需要的数据包括 客户姓名;密码;余额

项目2.2 单个账户的取款与查看余额

# 定义了账户的相关信息
accountName = 'Joe'
accountBalance = 100
accountPassword = 'abed'

# 表示程序将一直执行,直到遇到break语句跳出循环。
while True:
    # 在每次循环开始时,会打印出一些指令供用户选择操作。指令包括查询余额、存钱、取款、显示账户和退出系统。
    print()
    print('b 查询余额')
    print('d 存钱')
    print('w 取款')
    print('s 显示账户')
    print('q 退出系统')
    print()

    action = input('输入指令: ')
    action = action.lower()  # force lowercase
    action = action[0]  # just use first letter
    print()

    # 用户输入的指令进行处理。在这段代码中,只处理了取钱('w')的操作
    if action == 'w':
        print('取钱:')

        userWithdrawAmount = input('输入存钱数量(整数): ')
        userWithdrawAmount = int(userWithdrawAmount)
        userPassword = input('请输入密码: ')

        # 如果取款数量为非负数且密码验证通过并取款数量大于账户余额,那么将存款金额加到账户余额accountBalance上
        if userWithdrawAmount < 0:
            print('不可以取出负数!')

        elif userPassword != accountPassword:
            print('密码错误')

        elif userWithdrawAmount > accountBalance:
            print('不可取出大于账户余额的钱')

        else:
            accountBalance = accountBalance - userWithdrawAmount
            print('当前账号余额为:', accountBalance)

    # 用户输入的指令进行处理。在这段代码中,处理了显示余额('b')的操作
    elif action == 'b':
        print('显示余额:')
        userPassword = input('请输入密码: ')
        if userPassword != accountPassword:
            print('密码错误')
        else:
            print('当前账户余额为: ', accountBalance)

效果如下:

 

代码分析:

这段代码是一个简单的银行账户程序,用于处理取款和查询余额操作。

首先,定义了账户的相关信息,包括账户名称、账户余额和账户密码。

接下来,使用一个无限循环while True,表示程序将一直执行,直到遇到break语句跳出循环。

在每次循环开始时,会打印出一些指令供用户选择操作。指令包括查询余额、存钱、取款、显示账户和退出系统。

然后,程序会要求用户输入一个指令,将用户输入的指令存储在变量action中。

接下来,对用户输入的指令进行处理。分别处理了取钱('d')和查询余额 ('b') 的操作。

如果用户选择了取钱操作,程序会要求用户输入取款的数量(整数)和密码。

然后,程序会进行一系列验证:

  • 首先,检查用户输入的取款数量userDepositAmount是否小于0
  • 其次,检查用户输入的密码userPassword是否与账户密码accountPassword相等
  • 接着,检查用户输入的取款数量是否已大于当前余额
  • 如果存款数量为非负数且密码验证通过且小于当前余额,那么将取款金额从账户余额扣除

这样,当用户选择取钱操作并通过验证时,显示更新后的余额给用户。

需要注意的是,这只是程序的一部分,只处理了取钱操作和查询余额,其他指令没有进行处理。后面的项目陆续会包含对这些指令的处理逻辑。·

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL8漏洞处理之小版本升级至8.0.33

MySQL低版本经常会出现一些漏洞&#xff0c;有些高危漏洞就得处理&#xff0c;以防未知风险。 一、漏洞描述 MySQL 安全漏洞(CVE-2023-21912)(CVE-2023-21980): Oracle MySQL 5.7.41 版本及之前版本和 8.0.32 版本及之前版本的 Client programs 组件存在安全漏洞。低权限攻击…

使用Channel的一些业务场景

使用Channel的一些业务场景 首先需要明确的就是&#xff0c;发送方才知道什么时候关闭 channel &#xff0c;这个是比较符合逻辑的。 我们需要知道哪些情况会使 channel 发生 panic 关闭一个 nil 值会引发关闭一个已经关闭的 channel 会引发向一个已经关闭的 channel 发送数据…

职场人的AI私塾,帮你打造得力的AI助手

你有没有想过&#xff0c;为什么有一些周围的小伙伴&#xff0c;工作量看着也不少&#xff0c;但事务处理速度特别快&#xff0c;质量也不差&#xff1b;一些看起来难度比较大或者生疏的工作&#xff0c;也能轻松应付得来&#xff0c;难道他们都是天生的工作能力出众&#xff1…

小白速看!带你轻松解决Java的空指针异常

关注“Java架构栈”微信公众号&#xff0c;回复暗号【Java面试题】即可获取大厂面试题 异常案例 对很多Java初学者来说&#xff0c;在学习的初期是很容易遇到各种异常的&#xff0c;就比如咱们今天要讲的这个空指针异常。所谓“授之以鱼&#xff0c;不如授之以渔”&#xff0c;…

Q-Vision+Kvaser CAN/CAN FD/LIN总线解决方案

智能联网技术在国内的发展势头迅猛&#xff0c;随着汽车智能化、网联化发展大潮的到来&#xff0c;智能网联汽车逐步成为汽车发展的主要趋势。越来越多整车厂诉求&#xff0c;希望可以提供本土的测量软件&#xff0c;特别是关于ADAS测试。对此&#xff0c;Softing中国推出的Q-V…

CppUnit——【由JUnit移植过来的】C++单元测试框架——的下载安装

C单元测试框架CppUnit的下载与安装 简介下载地址导入到Virtual Studio准备条件根据VS版本选择导入对应的.sln文件 简介 CppUnit是【由JUnit移植过来的】C测试框架。 下载地址 从我使用的CppUtest框架中的文档/readme/ReadmePart1_VisualStudio.rtf文件中看到了官网的地址cpp…

前端性能优化:高在性能,大在范围,必要前置知识一网打尽!(下)

前言 在上一篇 前端性能优化&#xff1a;高在性能&#xff0c;大在范围&#xff0c;必要前置知识一网打尽&#xff01;&#xff08;上&#xff09; 一文中介绍了和前端性能优化相关的一些前置知识&#xff0c;那么本篇就针对优化方案进行总结&#xff0c;核心的方向还是上篇文…

C++基础(6)——类和对象(4)

前言 本文主要介绍了C中运算符重载的基本知识。 4.5.1&#xff1a;加号运算符重载&#xff08;成员函数和全局函数都可实现&#xff09; 运算符重载&#xff1a;对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型 1&#xff1a;成员…

管理类联考——写作——素材篇——论说文——写作素材03——志篇:逆境·考验04——志篇:初心

管理类专业学位联考 (写作能力) 论说文素材 03——志篇&#xff1a;逆境考验 论文说材料: 逆境是天才的进身之阶&#xff1b;信徒的洗礼之水&#xff1b;能人的无价之宝&#xff1b; 弱者的无底之渊。 ——巴尔扎克 一&#xff1a;道理论据 不是一番寒彻骨&#xff0c;怎得…

【Azure】微软 Azure 基础解析(九)Azure 标识、身份管理、Azure AD 的功能与用途

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx 【A…

测量设备频宽范围选择要素—系统响应速度

系统响应速度是输入信号经过电压/电流驱动系统输出响应的幅值升到终值过程的斜率&#xff0c;而上升时间是系统响应速度的一种度量&#xff0c;上升时间越短&#xff0c;响应速度越快。 由一阶系统响应定义中&#xff0c;稳定的一阶系统上升时间 定义是响应从终值10%上升到终值…

git常用命令合集(建议收藏)

1、git init将本文件夹初始化成一个本地git仓库 2、git clone&#xff07;xxx&#xff07;将github上的远程克隆到本地 3、git add [file1] [file2] 添加文件到暂存区&#xff0c;包括修改的文件、新增的文件 4、git add [dir] 添加目录到暂存区&#xff0c;包括子目录 5、…

java 类之间相互引用实例探索

本文记录一下自己对类之间相互引用的探索&#xff0c;如有错误&#xff0c;希望不吝赐教 问题一&#xff1a;类之间相互引用依赖会不会引用死循环 不会&#xff0c;例如&#xff1a;A类中声明一个B类的引用&#xff0c;B类中也声明一个A类的引用&#xff0c;因为类之间的引用相…

TCP为什么要三次握手与四次分手?

概要 TCP协议是五层协议中运输层的协议&#xff0c;下面依赖网络层、链路层、物理层&#xff0c;对于一个报文想发到另一台机器(假设是服务器)上对等层&#xff0c;每一个所依赖的层都会对报文进行包装&#xff0c;例如TCP协议就依赖网络层的IP协议&#xff0c;所以发送的报文会…

【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例

数据库故障&分析&#xff1a; SQL server数据库数据无法读取。 经过初检&#xff0c;发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0&#xff0c;无法找到文件开头&#xff0c;数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉…

大专毕业,干了 3 年外包,废了····

如果不是女朋友和我提分手&#xff0c;我估计到现在还是外包公司呆着 大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近3年的点点点&#xff08;功能测试&#xff09;&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在…

VSCode借助Remote-SSH扩展,远程调试linux系统的机器人

本文主要介绍使用VSCode借助Remote-SSH扩展&#xff0c;远程调试linux系统的机器人的方法 在我之前的文章&#xff1a; ROS主机搭建NFS服务器&#xff0c;虚拟机通过挂载访问及修改主机文件 中介绍了采用挂载到的方式进行远程调试的方法&#xff0c;本文将介绍另一种方法&#…

汽车三高试验离不开的远程试验管理平台——TFM

一 背景 众所周知&#xff0c;车辆在量产之前都要经过长时间的耐久性试验和多种汽车适应性或法规试验。道路试验就是在汽车上装设测试仪表和施加模拟载荷&#xff0c;并按实际使用条件来进行测试。此外&#xff0c;在实际试验场地和试验时间上也是有一定规定的。企业根据不同的…

导出符号表和字符设备驱动

目录 1. 导出符号表 1.1. 应用场景&#xff1a;驱动B想要使用驱动A的函数 1.2. 函数解析 1.3. 撰写提供者.c文件 1.4. 撰写提供者makefile文件 1.5. 执行makefile文件生成Module.symvers 1.6. 撰写调用者.c文件 1.7. 撰写调用者的makefile 1.8. 调用验证 2. 字符设备…

springCloud对接kafka+websockt消息中心

1.网关没有配置message和websockt的路由 2.message启动报错&#xff0c;线上zookeeper启动失败导致 3.message配置文件参数读取不到&#xff0c;原因&#xff1a;message_dev.yml 正确名称 message-dev.yml 4.线上websockt地址连接失败&#xff0c;原因&#xff1a;白名单没…