global关键字、python实现ATM简单功能

news/2024/4/25 20:13:27/文章来源:https://blog.csdn.net/weixin_63318044/article/details/128092565

目录

一.局部变量、全局变量

二.global关键字

演示

 三.编写ATM程序

要求

详细步骤

存在问题

改进

 完整代码


 

一.局部变量、全局变量

1.什么是局部变量

作用范围在函数内部,在函数外部无法使用

2.什么是全局变量

在函数内部和外部均可使用

3.如何将函数内定义的变量声明为全局变量

使用global关键字,global变量

二.global关键字

思考:

 

 testB函数需要修改变量num的值为200,如何修改程序?

这时我们就需要把局部变量转变为全局变量,利用global关键字

演示

num = 200
def A():print(f"A:{num}")
def B():global numnum = 500print(f"B:{num}")A()
B()
print(num)

结果是

 三.编写ATM程序

要求

定义一个全局变量: money,用来记录银行卡余额(默认5000000)
定义一个全局变量: name,用来记录客户姓名(启动程序时输入)
定义如下的函数:

  •         查询余额函数
  •         存款函数
  •         取款函数
  •         主菜单函数

程序启动后要求输入客户姓名
查询余额、存款,取款后都会返回主菜单
存款、取款后,都应显示一下当前余额
客户选择退出或输入错误,程序会退出,否则一直运行

详细步骤

1.定义全局变量,输入姓名

2.定义查询函数

 3.定义存款函数

4.定义取款函数

 

 5.定义主菜单

 6.设置循环,确保持续中途不退出

 运行结果

存在问题

但我们进行存款或者取款的时候,会调用查询余额函数,在查询余额函数中会输出这个:

 但是,我只想这一print只在单独调用查询余额函数时才出现,为实现这一目标那就需要就一个if判断语句

改进

 

 这样运行结果就是

 

 完整代码

money = 500000
name = None#输入姓名
name = input("请输入您的姓名:")#定义查询函数
def query(show_header):if show_header:print("------------查询余额--------------")print(f"{name},您好,您所剩余额为{money}")#定义存款
def saving(num):global moneymoney+=numprint("------------存款--------------")print(f"{name},您好,您存入{money}成功")query(False)#定义取款
def get_money(num):global moneymoney -= numprint("------------取款--------------")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)continueelif keyboard_input=="2":num =int(input("您想存入多少钱:"))saving(num)continueelif keyboard_input=="3":num = int(input("您想取出多少钱:"))get_money(num)continueelse:print("程序退出了!")break

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[附源码]SSM计算机毕业设计校园自行车租售管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

高等数学(第七版)同济大学 习题10-3 (前9题)个人解答

高等数学(第七版)同济大学 习题10-3(前9题) 函数作图软件:Mathematica 1.化三重积分I∭Ωf(x,y,z)dxdydz为三次积分,其中积分区域Ω分别是\begin{aligned}&1. \ 化三重积分I\iiint_{\Omega}f(x, \ y, …

【C++】类型转换

目录 一、C语言风格类型转换 二、C风格类型转换 1.static_case 2.reinterpret_case 3、const_case 4、dynamic_case 三、RTTI 总结 一、C语言风格类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返…

【正点原子FPGA连载】 第二十章 LCD触摸屏实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十章 LCD触摸…

Vue.js 加入高德地图的实现方法

一、功能需求 1.根据输入内容进行模糊查询,选择地址后在地图上插上标记,并更新经纬度坐标显示 2.在地图点击后,根据回传的左边更新地址信息和坐标显示 二、准备 1.申请高德地图账号,创建应用 2.在应用管理中 获得key 和安全密…

[附源码]Python计算机毕业设计Django常见Web漏洞对应POC应用系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Python学习:json对象与string相互转换教程

首先要明确,python里有json这个库,但并没有json这个类,所以所谓的json对象本质上就是一个dict;而json这个库,用于实现dict到string、string到dict的互转。 更具体一点,json对象(dict&#xff0…

Linux网络编程——IO多路复用

文章目录1,I/O模型2,阻塞I/O 模式2.1,读阻塞(以read函数为例)2.2,写阻塞3,非阻塞I/O模式3.1,非阻塞I/O模式的实现(fcntl()函数、ioctl() 函数)3.1.1&#xff…

leetcode 343. 整数拆分(动态规划)

题目链接:343. 整数拆分 动态规划 (1) 确定 dpdpdp 数组下标含义: dp[i]dp[i]dp[i]: 将 iii 拆分为至少两个正整数之后的最大乘积; (2) 确定递推公式: 当 i≥2i \ge 2i≥2 时, 设 jjj 是 iii 拆分出来的第一个正整数&#xff0c…

关于uni-app小程序接入微信登录

https://uniapp.dcloud.net.cn/api/plugins/login.html#login 官网上有关于uni.login()的说明,如果是要微信登录,则需要wx.login()。 小程序登录 | 微信开放文档 如下图,在小程序管理平台生成AppSecret,同时将AppId在HubilderX中…

swift @State @Published @ObservedObject sink

State struct ContentView: View {State private var isRain truevar body: some View {VStack {Image(systemName: isRain ? "cloud.rain.fill" : "sun.max.fill").resizable().frame(width: 100, height: 100)Text(isRain ? "我們淋著大雨不知何…

【PS-7】移动工具

目录 移动工具快捷键【v】(英文状态) 多文件间拖拽图层对象 快捷键【ALT】复制图层 【ALTSHIFT】只能垂直/水平/45角地去复制图层 4个方向键可以微调图层的位置 变换控件 对齐分布 【题外话】设置参考线颜色 【题外话】快捷键【F12】让已经动过…

实验三-----数据库

一、实验目的 1.掌握SQL Server Management Studio中SQL 查询操作; 2.掌握SQL 的单表查询命令; 3.掌握SQL 的连接查询操作; 4.掌握SQL 的嵌套查询操作; 5.掌握SQL 的集合查询操作。 二、实验环境 1.实验室名称&…

[附源码]计算机毕业设计springboot海南琼旅旅游网

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

前端单元测试,更进一步

前端测试2022 如果从 2014 年 Jest 的第一个版本发布开始计算,前端开发领域工程化的单元测试能力已经发展了八年有余。Jest 集成了 Jasmine 等以往各种被证明有效的单元测试框架和断言等工具,也可以用来完成包含外部接口服务的集成测试等。最近几年热门的…

xxl-job安装部署

一、简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 中文文档English Documentation 二、安装 xxl-job需要的提前安装好以下环境:jdk、m…

INTERSPEECH 2022|CALM: 基于对比学习的表现力语音合成跨模态说话风格建模【语音之家】

本文由清华大学与腾讯科技有限公司和香港中文大学合作,并 在腾讯公司落地应用 。 说话风格建模对于表现力语音合成具有重要作用。 现有基于参考音频提取风格表征的方法通常利用文本的语义相似度进行参考音频选择,忽略了语义信息和说话风格的差异性。 本文…

大厂都在用MyBatis,跳槽的时候MyBatis更是面试必问的内容,那你对于MyBatis又掌握了多少呢?这份MyBatis源码解析值得拥有!

MyBatis作为一个流行的半自动ORM框架,里面融合了许多优秀的设计理念,分析其源码骨架能够帮你建立良好的项目设计经验。由于其比较复杂,我会分成几篇来讲,一起踏上征服的旅程吧! 首先把MyBatis源码包导入到idea&#x…

python+django汽车租赁系统pycharm项目

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行性 6 3.2系统现状分析 6 3.3功能需求分析 7 …

Apollo 应用与源码分析:Monitor监控-软件监控-时间延迟监控

目录 代码 分析 RunOnce 函数分析 UpdateState函数分析 发送时间延迟报告函数分析 备注 代码 class LatencyMonitor : public RecurrentRunner {public:LatencyMonitor();void RunOnce(const double current_time) override;bool GetFrequency(const std::string& ch…