Python学习从0到1 day9 Python函数

苦难是花开的伏笔

            ——24.1.25

函数

1.定义

函数:是组织好的,可重复使用的,用来实现特定功能的代码段

2.案例

在pycharm中完成一个案例需求:不使用内置函数len(),完成字符串长度的计算

#统计字符串的长度,不使用内置函数len()
str = input("请您输入字符串\n")
length = 0
for i in str:length += 1
print(f"字符串的长度是{length}")

通过定义一个函数改进:

#统计字符串的长度,不使用内置函数len()
str = input("请您输入字符串\n")
length = 0
for i in str:length += 1
print(f"字符串{str}的长度是{length}")#可以使用函数,定义这个过程
def my_len(data):count = 0for i in data:count += 1print(f"字符串{data}的长度为{count}")my_len("我一直相信")

3.学习、使用函数的意义

为了得到一个针对特定需求、可供重复利用的代码段,①提高程序的复用性,②减少重复性代码、③提高开发效率

二、函数的基础定义语法

1.函数的定义

def 函数名(传入参数):

        函数体

        return 返回值

2.函数的调用

函数名(参数)

3.注意事项

①参数如果不需要,可以省略

②返回值不需要,也可以省略

③函数值必须先定义,后使用

4.练习案例:自动查核酸

定义一个函数,函数名任意,要求调用函数后可以输出如下欢迎语:

欢迎您的光顾!

请出示您的健康码以及72小时的核酸证明!

def invite():print("欢迎您的光临!")print("请出示您的健康码以及72小时核酸证明!")invite()

三、函数的参数

1.函数的传入参数

传入参数的功能是:在函数进行计算的时候,接收外部(调用时)提供的数据

函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数

        参数之间使用逗号进行分隔

函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值

        传入的时候,按照顺序传入数据,使用逗号分隔

传入参数的数量是不受限制的。

        可以不适应参数

        也可以仅使用任意N个参数

def add(a,b):result = a + bprint(f"{a} + {b}的结果是:{result}")add("我一直相信,","一切都会好的")
add(99,11)

2.函数的参数个数没有限制

def add(a,b,c):result = a + b + cprint(f"{a} + {b} + {c}的结果是:\n{result}")add("我一直相信,","一切都会好的","万事胜意")
add(99,11,4)

3.总结

①函数的传入参数的作用是?

        在函数运行的时候,接受外部传入的数据

②使用方式

        def add(x,y):

                result = x + y

                print(f"{x}+{y}的结果是:{result}"}

③注意事项

        函数定义中的参数,称之为形式参数

        函数调用中的参数,称之为实际参数

        函数的参数数量不限,使用逗号分隔开

        传入参数的时候,要和形式参数一一对应,逗号隔开

4.练习案例:升级版自动查核酸

定义一个函数,名称任意,并接受一个参数传入(数字类型,表示体温),在函数内进行体温判断(正常范围:<=37.5度),并输出如下内容:

        欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!

        体温测量中,您的体温是:37.3度,体温正常请进!

        欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!

        体温测量中,您的体温是:39.3度,需要隔离!

def Judge(temp):print("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!")if temp <= 37.5:print(f"体温测量中,您的体温是:{temp}度,体温正常请进!")else:print(f"体温测量中,您的体温是:{temp}度,需要隔离!")temp = float(input("请您输入您测量的体温\n"))
Judge(temp)

四、函数的返回值

1.函数返回值的定义

所谓“返回值”,就是程序中函数完成事情后,最后给调用者的结果

def add(a,b):result = a + breturn resultr = add(89,28)
print(r)

2.函数返回值的语法

def 函数(参数...):

        函数体

        return 返回值

变量 = 函数(参数)

如上,变量就能接收到函数的返回值

语法就是:通过return关键字,就能向调用者返回数据

return后面的语句不会被执行

3.总结

①什么是函数返回值?

        函数在执行完成后,返回到调用者的结果

②返回值的应用语法:

        使用关键字:return来返回结果

③注意:

        函数体遇到return后就结束了,所以写在return后的代码都不执行

4.None类型

当函数没有使用return语句返回数据,函数有返回值

Python中有一个特殊的字面量:None,其类型是:<class 'NoneType'>

无返回值的函数,实际上就是返回了None这个字面量

None表示:空的,无实际意义的意思

函数返回的None,表示这个函数没有返回什么有意义的内容,也就是返回了空的意思

def future():print("一切都会好的")return Noneresult = future()
print(f"无返回值函数,返回的内容是:{result},返回值的类型是{type(result)}")

5.None类型的应用场景

None作为一个特殊的字面量,用于表示:空、无意义、其有非常多的应用场景

①用在函数无返回值上

②用在if判断上

         在if判断中,None等同于False

        一般用于在函数中主动返回None,配合if判断做相关处理

③用于声明无内容的变量上

        定义变量,但暂时不需要变量有具体指,可以用None来代替

        暂不赋予变量具体值

        name = None

6.总结

1.什么是None

        None是类型‘NoneType’的字面量,用于表示:空的,无意义的

2.函数如何返回None

        不使用return语句即返回None

        主动return None

3.使用场景

        函数返回值

        if判断

        变量定义

7.函数文档说明

在函数内部添加,定义一个多行注释

"""

"""

会自动生成函数的文档注释

在Pycharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

建议补齐说明文档

8.什么是函数的嵌套

所谓的函数嵌套调用是指一个函数里面又调用了另外的一个函数

def func_b():print("---2---")def func_a():print("---1---")func_b()print("---3---")func_a()

如果函数A中,调用了另外一个函数B,那么先把函数B中的任务全部都执行完毕之后才会回到上次,函数A执行的位置

五、函数中的变量

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)

主要分为两类:局部变量和全局变量

1.局部变量

所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效,除了函数,局部变量就无法使用了

2.全局变量

所谓全局变量,指的是在函数体内、外部都能生效的变量

3.global关键字

使用global关键字,可以在函数内部声明变量为全局变量

在函数内部:

        global num

在声明变量之前用global关键字进行修饰,将函数内部的变量定义为全局变量

六、函数的综合案例

综合案例:银行ATM机

①定义一个全局变量:money,用来记录银行卡余额(默认5000000)

②定义一个全局变量:name,用来记录客户姓名(启动程序时输入)

③定义如下的函数:

        查询余额函数

        存款函数

        取款函数

        主菜单函数

④需求:

        程序启动后要求输入客户姓名

        查询余额、存款、取款后都会返回主菜单

        存款、取款后、都会显示当前余额

        客户选择退出或输入错误,程序会退出,否则会一直运行

money = 5000000
name = input("请您输入客户姓名:\n")def menu():print("************ 1.查询余额 ************")print("************ 2.存款     ************")print("************ 3.取款     ************")print("************ 4.退出系统  ************")def Find():print(f"{name},您好,您的余额为:{money}元")def Insert(gold):print(f"您存款了金额为:{gold}")global moneymoney += goldprint(f"现在的余额为:{money}")def Delete(gold):print(f"您已取出了金额:{gold}")global moneymoney -= goldprint(f"现在的余额为:{money}")menu()
while(True):Finger = int(input("请您选择你想要的操作:"))if (Finger == 1):Find()elif(Finger == 2):gold = int(input("请您输入您存款的金额"))Insert(gold)elif(Finger==3):gold = int(input("请您输入您取款的金额"))Delete(gold)else:print("您已退出系统")break

 

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

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

相关文章

伊恩·斯图尔特《改变世界的17个方程》薛定谔方程笔记

想法是等这学期学到薛定谔方程后再把整份完善下。 它告诉我们什么&#xff1f; 这个方程不是把物质作为粒子&#xff0c;而是作为波&#xff0c;并描述这样的波如何传播。 为什么重要&#xff1f; 薛定谔方程是量子力学的基础&#xff0c;它与广义相对论一起构成了当今最有效的…

NGINX如何实现rtmp推流服务

最近直播大火&#xff0c;直播推流软件遍地开花&#xff0c;那么用NGINX如何进行推流呢&#xff1f;下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流&#xff0c;我们主要从一下几点介绍&#xff1a; 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

Vue 3.0中Treeshaking特性(详细解析)

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术&#xff0c;专业术语叫 Dead code elimination 简单来讲&#xff0c;就是在保持代码运行结果不变的前提下&#xff0c;去除…

day05-盒子模型

01-选择器 结构伪类选择器 基本使用 作用&#xff1a;根据元素的结构关系查找元素。 li:first-child {background-color: green; } :nth-child(公式) 提示&#xff1a;公式中的n取值从 0 开始。 伪元素选择器 作用&#xff1a;创建虚拟元素&#xff08;伪元素&#xff09;…

vue项目中如何使用SVG图标

IconFont使用的不足&#xff1a;图标添加、修改、删除以后在线链接需要更新离线资源需要重新下载项目代码需要同步更新。 在项目不断更新和迭代的过程中&#xff0c;图标的增减变化还没有稳定的情况下&#xff0c;开发人员的工作效率会明显下降。 那么有没有一个图标应用方式…

【C++】list讲解及模拟

目录 list的基本介绍 list模拟实现 一.创建节点 二.迭代器 1.模版参数 2.迭代器的实现&#xff1a; a. ! b. c. -- d. *指针 e.&引用 整体iterator (与const复用)&#xff1a; 三.功能实现 1.模版参数 2.具体功能实现&#xff1a; 2.1 构造函数 2.2 begi…

【操作系统】实验九 写一个设备驱动程序

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

6.【SpringBoot3】登录优化-redis

1. SpringBoot 集成 redis 示例 在之前实现的登录接口中&#xff0c;用户登录成功后会生成一个令牌响应给浏览器&#xff0c;之后浏览器访问其他接口时&#xff0c;都要携带该令牌&#xff0c;接受拦截器的检验&#xff0c;如果令牌有效就放行&#xff0c;允许访问后续接口&am…

uml时序图刻画多个线程的活动

使用box关键字圈入不同线程内的组件 使用loop关键字客刻画线程的定时活动 示例

SpringMVC-RESTFul

文章目录 RESTFul一、基础概念二、增删改查1.查询全部用户信息 &#xff08;GET&#xff09;2.根据id查询用户信息3.添加用户&#xff08;POST&#xff09;4.修改用户 &#xff08;PUT&#xff09;5.删除用户 &#xff08;DELETE&#xff09; RESTFul 一、基础概念 二、增删改…

GitHub 上传文件夹到远程仓库、再次上传修改文件、如何使用lfs上传大文件、github报错一些问题

按照大家的做法&#xff0c;把自己遇到的问题及解决方案写出来&#xff08;注意&#xff1a;Error里面有些方法有时候我用可以成功&#xff0c;有时候我用也不能成功&#xff0c;写出来仅供参考&#xff0c;实在不行重头再clone&#xff0c;add&#xff0c;commit&#xff0c;p…

Qt程序设计-修改系统时间(Windows和Linux)

本文讲解Qt程序设计-修改系统时间(windows) 1、实例 创建项目,添加DateEdit和TimeEdit控件和按钮 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpubl…

C#,生成图片的指定尺寸缩略图的源代码

编程的时候经常用到图像的缩略图。 本文发布一个用于生成指定尺寸的缩略图的简单方法。 1 文本格式 private void button1_Click(object sender, EventArgs e) { CreateThumbnail("demo.jpg", "demo_thumb.jpg", 128, 128); } private void CreateTh…

社交媒体与新闻:Facebook在信息传播中的角色

社交媒体的崛起不仅改变了人们的日常交流方式&#xff0c;也对新闻传播产生了深远的影响。在众多社交媒体平台中&#xff0c;Facebook以其庞大的用户基础和强大的社交网络机制&#xff0c;成为信息传播的中流砥柱。本文将深入探讨Facebook在社交媒体与新闻传播的交汇点上扮演的…

xshell无法连接linux,查询本机ip时出现<NO-CARRIER,BROADCAST,MULTICAST,UP>

在用xshell连接虚拟机VMware中的linux时&#xff0c;发现昨天还能连通的&#xff0c;今天连接不了了 我寻思应该是网卡配置出问题了&#xff0c;就去终端ip addr试了一下&#xff0c;果然发现问题&#xff0c;ip 查看网卡ens33就发现出现ens33:<NO-CARRIER,BROADCAST,MULTI…

git安装步骤

安装环境&#xff1a;Windows10 64bit 下载 Git网址 &#xff1a;Git - Downloading Package 版本&#xff1a;Git-2.21.0-64-bit 第一步&#xff1a;双击下载后的Git-2.21.0-64-bit.exe&#xff0c;开始安装 安装开始 第二步&#xff1a;选择安装路径&#xff0c;点击[next]…

Linux基础指令大汇总

Linux的指令比较多&#xff0c;在学习的过程中要学会总结和归纳&#xff0c;同时结合实践多多使用&#xff0c;就像学数学一样&#xff0c;不是背过公式就等于掌握的&#xff0c;而是要知道在什么时候用&#xff0c;怎么用才是关键。 这篇文章会列举一系列常用的指令&#xff0…

基于Grafana+Prometheus搭建可视化监控系统实践

基本介绍 Grafana&#xff1a;一个监控仪表系统&#xff0c;可以根据提供的监控数据&#xff0c;生产可视化仪表盘&#xff0c;同时也具有告警通知功能。这里的监控数据来源&#xff0c;目前主要以Prometheus为主&#xff08;也支持其它数据源&#xff09;&#xff0c;每次展现…

EasyCVR视频智能监管系统方案设计与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…

Spring 的存储和获取Bean

文章目录 获取 Spring 上下文对象的方式存储 Bean 对象的方式类注解配置扫描路径&#xff08;必须&#xff09;Controller&#xff08;控制器存储&#xff09;Service&#xff08;服务&#xff09;Repository&#xff08;持久层&#xff09;Component&#xff08;工具&#xff…