Python实现ATM简单功能的示例详解
作者:阳862 发布时间:2021-07-17 12:06:46
标签:Python,ATM
一.局部变量、全局变量
1.什么是局部变量
作用范围在函数内部,在函数外部无法使用
2.什么是全局变量
在函数内部和外部均可使用
3.如何将函数内定义的变量声明为全局变量
使用global关键字,global变量
二.global关键字
思考:
num=100
def testsA()
print(num)
def testB()
num=200
print(num)
testA() #结果:100
testB() #结果:200
print(f'全局变量num={num}') #结果:全局变量num=100
testB函数需要修改变量num的值为200,如何修改程序?
这时我们就需要把局部变量转变为全局变量,利用global关键字
演示
num = 200
def A():
print(f"A:{num}")
def B():
global num
num = 500
print(f"B:{num}")
A()
B()
print(num)
结果是
三.编写ATM程序
要求
定义一个全局变量: money,用来记录银行卡余额(默认5000000)
定义一个全局变量: name,用来记录客户姓名(启动程序时输入)
定义如下的函数:
查询余额函数
存款函数
取款函数
主菜单函数
程序启动后要求输入客户姓名
查询余额、存款,取款后都会返回主菜单
存款、取款后,都应显示一下当前余额
客户选择退出或输入错误,程序会退出,否则一直运行
详细步骤
1.定义全局变量,输入姓名
#定义全局变量
money = 500000
name = None
#输入姓名
name = input("请输入您的姓名:")
2.定义查询函数
#定义查询函数
def query(show_header):
if show_header:
print("------------查询余额--------------")
print(f"{name},您好,您所剩余额为{money}")
3.定义存款函数
#定义存款
def saving(num):
global money
money+=num
print("------------存款--------------")
print(f"{name},您好,您存入{money}成功")
query()
4.定义取款函数
#定义取款
def get_money(num):
global money
money -= num
print("------------取款--------------")
print(f"{name},您好,您取出{num}成功")
query()
5.定义主菜单
#定义主菜单
def main():
print("------------主菜单--------------")
print(f"{name}您好,欢迎来到ATM,请选择操作")
print("查询余额:输入1")
print("存款: 输入2")
print("取款: 输入3")
print("退出: 输入4")
return input("请输入您的选择:")
6.设置循环,确保持续中途不退出
#设置循环确保程序中不退出
while True:
keyboard_input = main()
if keyboard_input=="1":
query(True)
continue
elif keyboard_input=="2":
num =int(input("您想存入多少钱:"))
saving(num)
continue
elif keyboard_input=="3":
num = int(input("您想取出多少钱:"))
get_money(num)
continue
else:
print("程序退出了!")
break
运行结果
存在问题
但我们进行存款或者取款的时候,会调用查询余额函数,在查询余额函数中会输出这个:
但是,我只想这一print只在单独调用查询余额函数时才出现,为实现这一目标那就需要就一个if判断语句
改进
这样运行结果就是
完整代码
money = 500000
name = None
#输入姓名
name = input("请输入您的姓名:")
#定义查询函数
def query(show_header):
if show_header:
print("------------查询余额--------------")
print(f"{name},您好,您所剩余额为{money}")
#定义存款
def saving(num):
global money
money+=num
print("------------存款--------------")
print(f"{name},您好,您存入{money}成功")
query(False)
#定义取款
def get_money(num):
global money
money -= num
print("------------取款--------------")
print(f"{name},您好,您取出{num}成功")
query(False)
#定义主菜单
def main():
print("------------主菜单--------------")
print(f"{name}您好,欢迎来到ATM,请选择操作")
print("查询余额:输入1")
print("存款: 输入2")
print("取款: 输入3")
print("退出: 输入4")
return input("请输入您的选择:")
#设置循环确保程序中不退出
while True:
keyboard_input = main()
if keyboard_input=="1":
query(True)
continue
elif keyboard_input=="2":
num =int(input("您想存入多少钱:"))
saving(num)
continue
elif keyboard_input=="3":
num = int(input("您想取出多少钱:"))
get_money(num)
continue
else:
print("程序退出了!")
break
来源:https://blog.csdn.net/weixin_63318044/article/details/128092565


猜你喜欢
- 最近写项目需要画出应用程序调用链的网路拓扑图,完全自己写需要花费些时间,那么首先想到的是echarts,但echarts的自定义写法写起来非
- 学习到的内容:1.一个64位的int类型值,充分利用高32位和低32位,进行相关加减以及从一个64位中拆出高32位和低32位.扩展:如何自己
- 获取输入的五个点画五边形def pentagonUpdate(): p = {} win = GraphWin(&q
- 写了个JavaScript版的DateAdd、DateDiff、IsDate函数,大家评评!需要说明的是,JavaScript中IsDate
- sql server的备份与恢复(查询分析器) 查询分析器: 命令: 1:备份数据库命令: backup database whdb1(要备
- 前言for...in 是Python程序员使用最多的语句,for 循环用于迭代容器对象中的元素,这些对象可以是列表、元组、字典、集合、文件,
- 本文实例讲述了Python操作json的方法。分享给大家供大家参考,具体如下:python中对json操作方法有两种,解码loads()和编
- 使用QMoive方法实现导入库文件from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.
- 随着网络的迅速发展 发展 发展,二维码的应用将会越来越多。同时很多只是很平凡的二维码,请拿起你的手 把这个二维码 设计起来吧。下面分享了几个
- 本文实例讲述了PHP观察者模式原理与简单实现方法。分享给大家供大家参考,具体如下:当一个对象状态发生改变后,会影响到其他几个对象的改变,这时
- 本文实例讲述了golang基于websocket实现的简易聊天室。分享给大家供大家参考,具体如下:先说点无关的,最近忙于工作没有更新博客,今
- 我插入Mysql5的中文一直是乱码。但是直接使用mysqlAdmin,EMS等工具插入DB就不是乱码。而且我还可以使用程序正常地读出来。原因
- clock()方法返回当前的处理器时间,以秒表示Unix上一个浮点数。精度取决于具有相同名称的C函数,但在任何情况下,这是使用于
- 问题:在论坛发表回复时出现“The table is full”的提示,字面意义上是数据表已满的意思。因为很少有开发者遭遇单一表超过4G的情
- 在学习与运用ASP中,response对象涉及到的方面也比较多,想全部都掌握也并非一两天的事,我也是最近才发现response对象中居然有这
- 需求当需要同时ping/telnet多个ip时,可以通过引入ping包/telnet包实现,也可以通过go调用cmd命令实现,不过后者调用效
- 前言计算机系统中有很多独占性的资源,在同一时刻只能每个资源只能由一个进程使用,我们之前经常提到过打印机,这就是一个独占性的资源,同一时刻不能
- 本文实例讲述了python实现的多任务版udp聊天器。分享给大家供大家参考,具体如下:说明编写一个有2个线程的程序线程1用来接收数据然后显示
- 说明:因为数据库版本问题出现的项目启动没有错误,但是操作数据库的过程出现错误,为了保持数据库一致,重新检索到了安装mysql5.6的教程,不
- plt.title() 是 matplotlib 库中用于设置图形标题的函数。一、基本语法如下plt.title(label, fontdi