Python基础——函数

 函数

和c语言函数意义相同,函数定义基础语法如下。

def 函数名(传入参数):函数体return 返回值

  展示自定义一个函数并对其进行封装。 

# 自定义函数字符串长度计算str1 = "itcast"
count=0
for x in str1:count +=1
print(f"{count}")# 把它变成一个函数
def my_len (str):count=0for x in str:count +=1print(f"{count}")# 调用函数
my_len(str1)

  注意:不管有没有return 返回,Python提供None字面量的返回内容,也可以主动返回None。

  给函数添加说明文档,在Pycharm中,输入三个双引号回车自动生成说明文档格式,

def add(x,y):"""add函数接受两个参数,对两数相加:param x: 形参中其中一个相加的数字:param y: 形参中另一个相加的数字:return: 返回值是两数相加的结果"""return x+yadd(5,6)

变量

变量分为局部变量和全局变量,局部变量在函数体中定义的变量,如果在外部直接调用,会报如下错误。

用global关键字将局部变量设置为全局变量

综合案例练习

基于控制台的银行存取款

初次自主编写代码练习

money=500000
name=None #初始赋初值
def check_balance():print(f"{name},您好,您的余额为{money}元")main_menu()
def withdrawal():""":return: """print("---------------------取款----------------------")num=int(input("请输入取款金额(整数)"))global money # money设置为全局变量money-=numprint(f"{name},您好,您取款{num}元成功")check_balance() # 嵌套调用main_menu()def deposit():""":return: """print("---------------------存款----------------------")num = int(input("请输入存款金额(整数)"))global moneymoney += numprint(f"{name},您好,您存款{num}元成功")check_balance()  # 嵌套调用main_menu()def main_menu():print("---------------------主菜单----------------------")print("您好,欢迎来到周氏银行,请选择操作")print("查询余额\t[输入1]")print("存款\t[输入2]")print("取款\t[输入3]")print("退出\t[输入4]")choice=int(input("请输入您的选择:"))if choice==1:check_balance()if choice==2:deposit()if choice==3:withdrawal()if choice==4:returnelse:print("输入错误")name=input("请输入您的姓名:")
main_menu()

以上程序需要改进的点

1、主菜单函数不是执行的主代码,只是展示菜单,重新用一个while循环,根据主菜单函数的选择执行相应的函数

2、执行完查询余额以及存取款函数后,返回主菜单不用通过在函数里嵌套调用主菜单函数,而是在while循环里用continue重复执行。

3、对齐多使用一个\t实现对齐效果。

4、在存取款函数中,存取款后展示余额通过嵌套调用查询余额函数,但为了不再展示查询余额函数的表头,给查询余额函数传一个布尔类型的参数。

5、多循环使用elif而不是if。

6、name的输入赋值在所有函数之前,因为后续还需要用到。

改进后代码

money = 500000
name = None  # 初始赋初值
name = input("请输入您的姓名:")def check_balance(show_header):if show_header:print("---------------------查询余额----------------------")print(f"{name},您好,您的余额为{money}元")def withdrawal():print("---------------------取款----------------------")num = int(input("请输入取款金额(整数)"))global money  # money设置为全局变量money -= numprint(f"{name},您好,您取款{num}元成功")check_balance(0)  # 嵌套调用
def deposit():print("---------------------存款----------------------")num = int(input("请输入存款金额(整数)"))global moneymoney += numprint(f"{name},您好,您存款{num}元成功")check_balance(0)  # 嵌套调用def main_menu():print("---------------------主菜单----------------------")print(f"您好,{name},欢迎来到周氏银行,请选择操作")print("查询余额\t[输入1]")print("存款\t\t[输入2]") # 注意多几个\t实现对齐print("取款\t\t[输入3]")print("退出\t\t[输入4]")return input("请输入您的选择:")while True:choice = main_menu()if choice == "1":check_balance(1)continueelif choice == "2":deposit()continueelif choice == "3":withdrawal()continueelif choice == "4":breakelse:print("输入错误")break

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

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

相关文章

昇思25天学习打卡营第20天|CycleGAN图像风格迁移互换

模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络,来自论文 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 。该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。…

0基础学会在亚马逊云科技AWS上利用SageMaker、PEFT和LoRA高效微调AI大语言模型(含具体教程和代码)

项目简介: 小李哥今天将继续介绍亚马逊云科技AWS云计算平台上的前沿前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS上的AI软甲开发最佳实践,并应用到自己的日常工作里。本次介绍的是如何在Amazon SageMaker上…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

Solidworks工程图替换参考零件

1.用solidworks选择工程图文件,点击参考。 2.双击文件名 3.选择新的参考零件,点击确定。

[ruby on rails]部署时候产生ActiveRecord::PreparedStatementCacheExpired错误的原因及解决方法

一、问题: 有时在 Postgres 上部署 Rails 应用程序时,可能会看到 ActiveRecord::PreparedStatementCacheExpired 错误。仅当在部署中运行迁移时才会发生这种情况。发生这种情况是因为 Rails 利用 Postgres 的缓存准备语句(PreparedStatementCache)功能来…

力扣第406场周赛

力扣第406场周赛 100352. 交换后字典序最小的字符串 - 力扣&#xff08;LeetCode&#xff09; 贪心&#xff0c;从 0 0 0开始扫描到 n n n如果有一个可以交换的就立马交换 class Solution { public:string getSmallestString(string s) {for(int i1;i<s.size();i){if(s[i…

【PyQt】

PyQT5线程基础&#xff08;2&#xff09; 线程案例案例一案例二 线程案例 案例一 案例一代码通过线程实现点击按钮向线程传输地址&#xff0c;程序等待20秒后&#xff0c;返回结果。 通过QtDesigner创建如下图所示的界面ui&#xff0c;并用UIC工具转成对应的py文件。 Ui_tes…

C语言之指针的奥秘(三)

一、字符指针变量 在指针的类型中&#xff0c;有字符指针char*&#xff0c;一般使用&#xff1a; #include<stdio.h> int main() {char ch w;char* p &ch;*p w;return 0; } 还有一种方式&#xff1a; #include<stdio.h> int main() {const char* p &qu…

123456

截止2023年10月&#xff0c;目前已公开的官方矢量数据有3个网站&#xff0c;按照公开时间顺序分别是&#xff1a;1&#xff09;全国地理信息资源目录服务系统&#xff1b;2&#xff09;西藏自治区自然资源厅&#xff1b;3&#xff09;福建省标准地图服务。我们将持续更新公开的…

2024较火的软件宣传单页HTML源码

源码介绍 2024较火的软件宣传单页HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果 效果截图 源码获取 2024较火的软件宣传单页HTML源码

自动驾驶可能解决的问题

首先是各种盲区&#xff0c;雷达可能检测到各种东西&#xff0c;而这些是视觉注意不到的 然后是每辆车可以互联互通&#xff0c;整体规划路线

Java二十三种设计模式-单例模式(1/23)

引言 在软件开发中&#xff0c;设计模式是一套被反复使用的、大家公认的、经过分类编目的代码设计经验的总结。单例模式作为其中一种创建型模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。本文将深入探讨单例模式的概念、实现方式、使用场景以及潜…

通讯录管理(C++入门练习)

通讯录管理系统 系统需求&#xff1a; 通讯录是一个可以记录亲人、好友信息的工具。本文主要利用C来实现一个通讯录管理系统系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人&#xff0c;信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 显示联系…

昇思25天学习打卡营第21天|DCGAN生成漫画头像

DCGAN原理 DCGAN&#xff08;深度卷积对抗生成网络&#xff0c;Deep Convolutional Generative Adversarial Networks&#xff09;是GAN的直接扩展。不同之处在于&#xff0c;DCGAN会分别在判别器和生成器中使用卷积和转置卷积层。 它最早由Radford等人在论文Unsupervised Re…

数据结构历年考研真题对应知识点(哈夫曼树和哈夫曼编码)

目录 5.5.1哈夫曼树和哈夫曼编码 1.哈夫曼树的定义 2.哈夫曼树的构造 【分析哈夫曼树的路径上权值序列的合法性&#xff08;2010&#xff09;】 【哈夫曼树的性质&#xff08;2010、2019&#xff09;】 3.哈夫曼编码 【根据哈夫曼编码对编码序列进行译码&#xff08;201…

【AMBA】AXI总线中的AXLEN、AXSIZE、AXBURST和4K边界

文章目录 AXI传输层级概念AXLEN[7:0]定义突发传输长度AXSIZE[2:0]定义突发传输transfer的位宽AXBURST[1:0]定义突发传输类型4K边界 AXI传输层级概念 在手册的术语表中&#xff0c;与 AXI 传输相关的有三个概念&#xff0c;分别是 transfer(beat)、burst、transaction。用一句话…

树莓派关机

文件 shutdown.sh #!/usr/bin/bash sudo shutdown -r nowpython 文件开头添加 #!/usr/bin/python3

C字符串和内存函数介绍(三)——其他的字符串函数

在#include<string.h>的这个头文件里面&#xff0c;除了前面给大家介绍的两大类——长度固定的字符串函数和长度不固定的字符串函数。还有一些函数以其独特的用途占据一席之地。 今天要给大家介绍的是下面这三个字符串函数&#xff1a;strstr&#xff0c;strtok&#xf…

前端web性能统计

前端web性能统计 1. 背景2. 业界方案2.1 腾讯2.2 蚂蚁金服2.3 字节跳动2.4 美团 3. 相关观念3.1 RAIL模型3.2 性能指标3.3 真实用户监控3.4 performance 4. 性能监控工具介绍5. 推荐采用方案 1. 背景 在如今的数字时代&#xff0c;网站和应用程序的性能对用户体验至关重要。用…

STM32MP135裸机编程:唯一ID(UID)、设备标识号、设备版本

0 资料准备 1.STM32MP13xx参考手册1 唯一ID&#xff08;UID&#xff09;、设备标识号、设备版本 1.1 寄存器说明 &#xff08;1&#xff09;唯一ID 唯一ID可以用于生成USB序列号或者为其它应用所使用&#xff08;例如程序加密&#xff09;。 &#xff08;2&#xff09;设备…