day11 函数基础

认识函数

什么是函数

概念

函数就是实现某一特定功能的代码封装

分类

a. 系统函数 - 由python语言已经创建好的函数,例如:print、inout、type、id、max、min、sorted、sum等
b. 自定义函数 - 由程序员自己创建的函数

定义函数

语法:
def 函数名(形参列表):
函数说明文档
函数体

说明:
def - 关键字;固定写法
函数名 - 由程序员自己命名
要求:是标识符,不能是关键字
范围:见名知义(看到函数名就大概知道函数的功能是什么)
不使用系统的函数名、类名、模块名
字母都小写,多个单词用下划线隔开
(): - 固定写法
形参列表 - 以’变量1,变量名2,…'的形式存在,这儿的每一个变量就是一个形参;形参可以一个都没有,也可以有多个
形参可以将函数外部的数据传递到函数内部;形参是通道
定义函数的时候需不需要形参需要几个看实现函数的功能需不需要额外的数据,需要几个
函数说明文档 - 本质就是和def保持一个缩进的多行注释;用来就是对函数的功能、参数和返回值进行说明的(说明书)
函数体 - 本质就是和def保持一个缩进的一条或者多条语句,本质就是实现函数功能的代码。(电路结构和机械结构)

练习1:写一个函数求两个数的和

def sum2(num1, num2):"""(功能说明区)求任意两个数的和:param num1: (参数说明)数字1:param num2: 数字1:return:(返回值说明)None"""print(num1 + num2)sum2(2, 5)

练习3:写一个函数统计指定字符串中数字字符的个数

def count1(str1):count2 = 0for x in str1:if '0' <= x <= '9':count2 += 1print(count2)# str1 = input('请输入字符串')
# count1(str1)

练习4:定义一个函数获取任意一个整数(正负都可以)的十位数

print(-153 // 10)
print(-16 % 10)def sws(num1):if num1 >= 0:num2 = num1 // 10 % 10else:num2 = 10 - (num1 // 10 + 1) % 10print(num2)# num1 = int(input('请输入数字'))
# sws(num1)

练习5:定义一个函数获取指定列表中所有的数字元素


def szys(list1):list2 = []for x in list1:if type(x) == int or type(x) == float:list2.append(x)print(list2)list2 = [2, 5, 9, 'dfgdf', '65198', (10, 20), 64]
szys(list2)

练习6:定义一个函数,获取另一个字符串的公共部分

def ggbf(a, b):c = set(a) & set(b)print(''.join(c))ggbf('abcn', '123ba92')

调用函数

语法:
函数名(实参列表)

说明:
函数名 - 需要哪个函数的功能就调用哪个函数,想要调用哪个函数就写哪个函数的函数名
注意:这儿的函数名必须是已经定义过的函数的函数名
() - 固定写法
实参列表 - 以’数据1,数据2,数据3…’ 的形式存在;实参就是真正通过形参传递到函数内部的数据
实参的个数由形参决定,默认情况被调用的函数有多少个形参调用的时候就需要多少个实参

3) 函数调用过程
当代码执行到函数调用语句的时候:
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值的过程),传参的时候必须保证每个形参都有值
第三步:执行函数体
第四步:确定返回值
第五步:回到函数调用的位置,接着往后执行

函数的参数

位置参数和关键字参数 - 根据实参的传递方式将函数的实参分为这两种

1) 位置参数
使用函数的时候直接将多个数据用逗号隔开,实参和形参从位置上一一对应
2) 关键字参数
调用函数的时候,在数据前面加上’形参名=’,实参和形参由关键字(形参名)来对应
3) 两种参数混合用
要求必须保证位置参数在关键字参数前面

def func1(x,y,z):print(f'x:{x},y:{y},z:{z}')
func1(10,20,30)func1(10,z=20,y=30)
print('==============================')

参数默认值

定义函数的时候可以给形参赋默认值,调用函数的时候已经有默认值的参数可以不用传参,直接使用默认值。

如果是给部分参数赋默认值,必须保证没有默认值的参数在有默认值的前面

def func2(x=1,y=2,z=3):print(f'x:{x},y:{y},z:{z}')
func2(10,20,30)
func2()
func2(100)
func2(y=200)
def func3(x,y,z=3,t=4):print(f'x:{x},y:{y},z:{z}')
func3(100,200)
func3(100,y=200,z=300)

参数类型说明

参数类型说明:定义函数的时候指定参数的类型
1**)没有默认值的参数添加类型说明**
形参名:数据类型
2)有默认值的参数,默认值的类型就是参数的类型

def func4(x:list,y:str,z:int,str2=''):pass

不定长参数(了解)

带*的不定长参数
在形参面前加*,那么这个参数就变成了一个元组,用来接收对应的所有实参(实参是元组中)

注意:如果函数参数在带*的参数后面,那么后面的这些参数在调用的时候必须使用关键字参数

函数的返回值

什么是返回值

1) 意义:返回值就是从函数内部传递到函数外部的数据
2) 怎么确定函数返回值(怎么将函数内部数据作为返回值传递到函数外部):
在函数中,将需要返回的数据放到return后面
return后面的值是多少,函数的返回值就是多少
3) 怎么获取函数返回值(在函数外部怎么获取从函数内部传递出来的数据):在函数外部获取函数调用表达式的结果
4) 什么时候需要返回值:如果实现函数的功能产生了新的数据,将新的数据作为返回值返回

作业

  1. 编写一个函数,交换指定字典的key和value。

      例如:dict1={'a':1, 'b':2, 'c':3}  -->  dict1={1:'a', 2:'b', 3:'c'}  def jh(dict1):xzd = {}for k in dict1:xzd[dict1[k]] = kprint(xzd)
    jh({'a': 1, 'b': 2, 'c': 3})
  2. 编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串

       例如: 传入'12a&bc12d-+'   -->  'abcd'  def qzm(str1):str2 = []for x in str1:if 'a' <= x <= 'z' or 'A' <= x <= 'Z':str2.append(x)print(''.join(str2))
    qzm('12a&bc12d-+')
    
  3. 写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母

      例如: 'abc' -> 'Abc'   '12asd'  --> '12asd'def bd(str1):str2 = ''for x,y in enumerate(str1):if 'a' <= y <= 'z':y1 = chr(ord(y)-32)str2 += y1 + str1[x+1:]breakelse:str2 += yprint(str2)
    bd('7878gfj889')
    
  4. 写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束

       例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
    def pd(str1,str2):a = str1[-(len(str2)):] == str2print(a)
    pd('abc231ab','1ab')
  5. 写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串

       例如: '1234921'  结果: True'23函数'   结果: False'a2390'    结果: False
    def csz(str1):for x in str1:if not('0' <= x <= '9'):print('False')breakelse:print('True')
    csz('23函数')
    
  6. 写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母

        例如: 'abH23好rp1'   结果: 'ABH23好RP1'
    
  7. 写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充

       例如: 原字符:'abc'  宽度: 7  字符:'^'    结果: '^^^^abc'原字符:'你好吗'  宽度: 5  字符:'0'    结果: '00你好吗'
    def bzf(a,b,c):print(a.rjust(b,c))
    bzf('abc',7,'^')
    
  8. 写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1

       例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0]  元素: 1   结果: 0,4,6  列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']  元素: '赵云'   结果: 0,4列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']  元素: '关羽'   结果: -1
    def zxb(a,b):c = []for x,y in enumerate(a):if y == b:c.append(x)if c == []:print('-1')else:print(c)zxb([1, 2, 45, 'abc', 1, '你好', 1, 0],1)
    
  9. 写一个自己的len函数,统计指定序列中元素的个数

        例如: 序列:[1, 3, 5, 6]    结果: 4序列:(1, 34, 'a', 45, 'bbb')  结果: 5  序列:'hello w'    结果: 7
    def ysgs(a):count1 = 0for x in list(a):count1 += 1print(count1)
    ysgs([1, 3, 5, 6])
  10. 写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值

      例如: 序列:[-7, -12, -1, -9]    结果: -1   序列:'abcdpzasdz'    结果: 'z'  序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98}   结果: 98
    def max1(a):if type(a) == list:print(max(a))if type(a) == str:b = a[0]for x in a:if b < x:b = xprint(b)if type(a) == dict:for y, z in a.items():d = 0if d < z:d = zprint(d)
    max1({'小明':90, '张三': 76, '路飞':30, '小花': 98})
    
  11. 写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在

        例如: 序列: (12, 90, 'abc')   元素: '90'     结果: False序列: [12, 90, 'abc']   元素: 90     结果: True     def sfcz(a,b):for x in a:if x == b:print('True')breakelse:print('False')
    sfcz([12, 90, 'abc'],90)
    
  12. 写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串

        例如: 原字符串: 'how are you? and you?'   旧字符串: 'you'  新字符串:'me'  结果: 'how are me? and me?'
    def thzf(a, b, c):if b in a:d = a.replace(b,c)print(d)
    thzf('how are you? and you?','you','me')
    

day11 - 每日总结及作业相关推荐

  1. day19 - 每日总结及作业

    正则表达式 匹配类符号 正则表达式 正则表达式是一种可以让一些复杂的字符串问题变得简单的工具 正则语法(通用) re模块: fullmatch(正则表达式,字符串) - 判断字符串是否满足正则表达式描 ...

  2. 【每日面试】作业帮社招面经(java工程师)

    面经来源 作者:惊鸿一面小萝卜 链接:https://www.nowcoder.com/discuss/667956?source_id=discuss_experience_nctrack& ...

  3. 数据库作业[定时执行任务]的创建

    --每月执行的作业 exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month' --每周执行的作业 ...

  4. 双11史上作业数最多,人工干预最少的一次技术保障

    引言 阿里巴巴双11史上作业数最多,但人工干预最少的一次双11技术保障: 从动态并发调整带来的单日10亿计算节点的节省,到数据智能编排带来的高级基线单个作业数十个小时执行时间的缩短,再到全新Bubbl ...

  5. 数据库备份与还原处理

    利用T-SQL语句,实现数据库的备份与还原的功能 体现了SQL Server中的四个知识点: 1.   获取SQL Server服务器上的默认目录 2.   备份SQL语句的使用 3.   恢复SQL ...

  6. sql server 数据库备份方案

    代码 /* 利用T-SQL语句,实现数据库的备份与还原的功能 体现了SQL Server中的四个知识点: 1. 获取SQL Server服务器上的默认目录 2. 备份SQL语句的使用 3. 恢复SQL ...

  7. 推荐一套开源中文课:自然语言处理(NLP)专题

    没错,百度出NLP开源中文课了! 顶配师资.模型全开源.配V100算力那种 最实用NLP中文课来袭   自然语言处理(下文简称NLP)是人工智能的关键研究领域之一,旨在教会计算机理解和生成语言.    ...

  8. 变而不变:我看分布式系统发展和阿里实践

    原文链接:http://click.aliyun.com/m/13967/ 大数据计算服务(MaxCompute)是一种快速.完全托管的PB/EB级数据仓库解决方案.具备万台服务器扩展能力和跨地域容灾 ...

  9. SQLServer数据库的备份/恢复的3中策略实例

    策略一 直接语句操作 实例: EXECUTE master.dbo.xp_fileexist N'F:\HR-ShiJie\Src\BackUpDevice.BAK' exec sp_addumpde ...

最新文章

  1. 独家|OpenCV1.9 如何利用OpenCV的parallel_for_并行化代码(附代码)
  2. 联想Y510P安装windows 8.1
  3. 微型计算机基础知识答案,计算机基础知识(答案已填)
  4. SQL Editor and reconnect【mysql(workbench)更新数据时候的一个异常】【Error Code:1175】
  5. Bing改善Microsoft Office及Edge浏览器图像搜索功能
  6. Python_爬虫笔记_2018.3.19
  7. 岁月是把杀猪刀时光不止催人老
  8. 谷歌浏览器翻译栏_将Google翻译栏添加到您喜欢的浏览器
  9. MC下载Forge/Optifine不想有广告怎么办
  10. 16进制转10进制c 语言算法,16进制转换算成10进制程序
  11. python可以在多平台运行 体现了python语言的,Python 可以在多平台运行,这体现了 Python 语言的 特性。...
  12. java excel 取消科学计数法_基于Java将Excel科学计数法解析成数字
  13. MFC使用SQLite 学习系列 一: SQLITE_MISUSE错误
  14. 关于仿写00片刻企业站
  15. 干货-Google支付后台验证操作流程【业务后台-GP后台流程】
  16. 怎样将腾讯视频qlv格式转换成mp3音频
  17. android 没有指南针,Android指南针指向我的位置,而不是北部
  18. excel表格两个表格合并
  19. 平面向量加法 (15 分)
  20. Cluster analysis :Basic Concepts and Algorithms -- Part 3 Hierarchical Clustering

热门文章

  1. 初学AI(ML、DL、TensorFlow)与python、OpenCV的一些体会
  2. 机器学习-Precision(查准率)、Recall(查全率)、P-R曲线
  3. Cg语言学习笔记(1)
  4. ROS的代价地图与AMCL定位原理
  5. 盥洗台的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 论文MGN笔记《Learning Discriminative Features with Multiple Granularities for Person Re-Identification》
  7. ORA-10456 ORA-01219
  8. 1.基于51单片机的蓝牙手机遥控小车
  9. IDEA连接达梦数据库
  10. Tandem Repeats Finder:串联重复序列查找工具