前方高能,初识函数

函数:

python_day_9

1丶函数

1、函数的作用

函数能够让大家代码结构更明显,而且制止了代码的重复,冗余,使1段代码也许功用能够频仍的被调用,大大升高了支出成效

1.定义:

    函数是对功能的包装

一.今天根本内容
函数:
函数:对功用的卷入
语法:
def 函数名(形参):
前方高能,初识函数。函数体
函数名(实参)
函数名:命名规则和变量同样

  函数是集体好的,可重复使用的,用来贯彻单一,或相关联效用的代码段

二、函数的定义

澳门葡京备用网址 1

def 函数名(参数1,参数2,*args,默认参数,**kwargs):
    """注释:函数功能和参数说明"""
    函数体
    ……
    return 返回值

1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
    参数可以定义多个,也可以不定义。
    参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
    如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None

澳门葡京备用网址 2

实比方下:

澳门葡京备用网址 3

1 def my_max(x,y):
2     '''比较两个值的大小,返回最大的那个数'''
3     if x > y:
4         return x
5     if x < y:
6         return y
7     else:
8         return '%s=%s'%(x,y)

澳门葡京备用网址 4

 

2.语法:

    def 函数名

      函数体

    函数名

函数名的命名规则和变量同样

函数的重返值:
return, 函数推行落成. 不会进行前面逻辑

  函数是对效果的卷入

叁、函数的调用

调用函数很简短,正是曾经定义的函数名加括号,要是此函数需求参数,那括号内就要参与必要传的参数。如,调用下面定义的my_max函数的法子如下:

1 my_max(5,2)

澳门葡京备用网址 ,三.函数的重返值:

return,函数实践完成,不会实施前边的

  一.只要函数中不写return则赶回None

  2.只写return,返回None

  叁.return 重回值:重返的是二个值

  四.return 值一,值二…:重返的是多个值,调用函数接收到的是元组

  1. 假设函数中不写return重返None
  2. 只写return 返回None
  3. return 重临值. 再次回到1个值
  4. return 值一, 值二,… 重临几个值. 调用方接收到的是元组

  语法:

4、函数的重回值

大家只必要在函数的结尾加上三个return,return前边写上您要回来的值就足以了。

接下去,大家就来商量一下以此return的用法。

return关键字的意义

  return
是一个首要字,在pycharm里,你会看到它产生乳白了。你必须一字不差的把这几个单词给背下来。

  那些词翻译过来就是“重返”,所以我们管写在return前面包车型客车值叫“再次回到值”

  要探讨重返值,大家还要领悟重临值有两种情景:分别是从未再次来到值、再次来到叁个值、重返三个值

从没重返值

  不写return的事态下,会私下认可重返三个None,等同于 return None

有三个重回值

  return
后边跟上重返值就可以,调用函数的话能够用3个变量来收纳这些再次来到值(就是将函数试行完现在的归来值赋给那一个变量),如下:

1 def my_sum(x,y):
2     '''求两个数字的和,返回两数之和'''
3     return x+y
4 
5 sum = my_sum(3,2)   #调用函数
6 print(sum)          #结果:5

有多少个重回值

  要是有多少个重临值的话只需在return前边依次跟上重临值,用逗号隔断。

  调用函数
的时候能够用三个变量来收纳(此时回去的是2个元祖,赋值给此变量),也得以用多个变量来选取,此时赶回值会按变量的一壹,11赋值(变量数要跟重返值的多寡相等),如下:

澳门葡京备用网址 5

1 def getNum():
2     '''返回三个数字的函数'''
3     return 1,3,6
4 
5 res = getNum()   #用一个变量接收返回值
6 print(res)        #结果是:(1, 3, 6)
7 
8 a,b,c = getNum()  #用一个变量接收返回值

9 print(a,b,c)      #结果是:1 3 6

澳门葡京备用网址 6

4.参数:

  在函数试行的时候给函数字传送递的音讯,函数的参数个数未有界定

  形参:函数评释的地点的变量

  实参:函数调用的时候给的切切实实的值

  传参:把实参交给形参的长河

参数:
在函数施行的时候给函数字传送递的音讯
函数的参数的个数未有界定

    def 函数名(形参列表):

伍、函数的参数

  1.形参:

    一.职位参数

    贰.暗中同意值参数,当调用的时候不给传值则利用的是暗中认可值

    三.混合使用  先地方参数,再默许值参数

  1. 形参:

      函数体(代码块,return)

函数的参数分为形参和实参。简单来讲,形参正是概念函数的时候的参数,而实参正是调用函数的时候传递的参数

  2.实参:

    1.地点参数,依照职位给形参赋值

    2.关键字参数,遵照名称给形参赋值

    三.混合参数,先地方参数,再注重字参数

 

小结:一.相见return,此函数甘休,return前面的东西不会施行

   贰. return 重临值:只写return
或然不写return,再次来到的是None,假设return
后边写了2个值,能够选拔叁个结果,借使后边写了七个值,则接受到的是1个tuple,能够直接解构为七个变量

 

    1. 地点参数.
    1. 暗中认可值参数. 当调用的时候不给传值使用暗许值
    1. 掺杂使用. 顺序: 一. 岗位参数, 二, 私下认可值参数

  调用:

而在调用函数进行传值的时候,传参方式又分为地方传参和首要字传参。

  1. 实参:

    函数名(实参列表)

def yue():
    print("Hello")
    print("你好")
    print("再见")
    print("拜拜")
yue()

 

岗位传参是根据岗位张开传值(此时,解释器会遵照顺序,将实参1 壹对应赋值给形参),

  • 1.岗位参数. 根据岗位给形参赋值
    1. 首要字参数. 依据名称给形参赋值
    1. 掺杂参数. 先用地方参数, 再用关键字参数

二丶再次来到值

重在字传参是根据注重字张开传值(那种传参形式是一贯将实参以赋值的艺术传给形参,如x=1,y=2)

  1. 前⽅⾼能-初识函数

  return:在函数实施的时候,即便遇上return,直接回到

地点传参的帮助和益处是有益,只需1壹写出要求传递的实参就行,关键之传参的优点是能够改动参数顺序。

如下:

1     '''求两个数字的和,返回两数之和'''
2     return x+y
3 
4 my_sum(3,2)      #位置传参
5 my_sum(x=3,y=2)  #关键字传参

其它,还有一种参数是默许参数,是指在概念函数的时候,个中二个大概四个参数已经内定了暗许值

那种情景下在调用函数进行传参的时候,仍然得以传递实参给此形参,假诺不传,此参数的值即为私下认可值,如下:

1 def user_info(name,sex='男'):
2     '''用户信息'''
3     print('%s的性别是%s'%(name,sex))
4 
5 user_info('小明')     #结果为:小明的性别是男生 。不用指定的情况下,默认是男
6 user_info('小花','女')#结果是:小花的性别是女。    传参的情况下,会覆盖默认值

 

除此以外,还有1种尤其的参数,他能够接到任何数据的参数,称为动态参数

  而动态参数又有两种,壹种是参数名前加贰个星号 ” * ”
这种参数能够收到不限数量的岗位参数,然后组成3个元祖

  另一种是动态参数是参数名前加多少个星号 “ ** ” 
那种参数能够吸收接纳不限数量的根本字参数,然后组成2个字典

  如下:

澳门葡京备用网址 7

1 def func(*args,**kwargs):
2     print(args)
3     print(kwargs)
4 
5 func(1,2,3,a='a',b='b',c='c')
6 #结果为:
7 # (1, 2, 3)
8 # {'b': 'b', 'c': 'c', 'a': 'a'}

澳门葡京备用网址 8

急需注意的是:借使1个函数的参数包罗:地方参数,暗许参数,以及动态参数
*args 和
**kwargs,那么她们的次第应该是:(地点参数,*args,暗中认可参数,**kwargs)

 

本节内容:

  一.万1函数什么都不写,不写return,未有重回值,获得的是None

陆、作业练习

 

  

澳门葡京备用网址 9

澳门葡京备用网址 10

  1 # 必做题:
  2 # 1、整理函数相关知识点,画思维导图,写博客
  3 # 2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
  4 def func(li):
  5     li1 = []
  6     for i in range(len(li)):
  7         if i % 2 == 1:
  8             li1.append(li[i])
  9     return li1
 10 
 11 l = func(['a','b','c','d','e'])
 12 print(l)
 13 
 14 # 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
 15 def func1(o):
 16     if len(o) > 5:
 17         return True
 18     else:
 19         return False
 20 print(func1('abc'))
 21 print(func1((1,2,3,4,5)))
 22 print(func1([1,2,3,4,5,6,7]))
 23 
 24 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
 25 def func2(l):
 26     if len(l) > 2:
 27         l = l[0:2]
 28     return l
 29 print(func2(['a','b','c']))
 30 # 5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
 31 def func3(str):
 32     count_i = 0
 33     count_s = 0
 34     count_sp = 0
 35     count_o = 0
 36 
 37     for i in str:
 38         if i.isdigit():
 39             count_i += 1
 40         elif i.isalpha():
 41             count_s += 1
 42         elif i == ' ':
 43             count_sp += 1
 44         else:
 45             count_o += 1
 46     return count_i,count_s,count_sp,count_o
 47 
 48 i,s,sp,o = func3('B e32 \# ~sd')
 49 print(i,s,sp,o)
 50 # 6、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
 51 def func4(s):
 52     if ' ' in s:
 53         return True
 54     else:
 55         return False
 56 print(func4('ab c'))
 57 print(func4(['a',' ','c']))
 58 7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
 59     dic = {"k1": "v1v1", "k2": [11,22,33,44]}
 60     PS:字典中的value只能是字符串或列表
 61 def func5(dic):
 62     dic_new = {}
 63     for k,v in dic.items():
 64         if len(v) > 2:
 65             v_new = v[0:2]
 66         dic_new.update({k:v_new})
 67     return dic_new
 68 dic = {"k1": "v1v1", "k2": [11,22,33,44]}
 69 print(func5(dic))
 70 # 8、写函数,接收两个数字参数,返回比较大的那个数字。
 71 def my_max(x,y):
 72     if x > y:
 73         return x
 74     elif x < y:
 75         return y
 76     else:
 77         return '两者同样大'
 78 print(my_max(3,6))
 79 print(my_max(2,2))
 80 
 81 选做题:
 82 9、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。
 83 import os
 84 def funx(file,msg):
 85     old_file = file
 86     with open('new_file.txt','w',encoding='utf-8') as new_f:
 87         new_f.write(msg)
 88     os.remove(old_file)
 89     os.rename('new_file.txt',old_file)
 90 funx('test.txt','这是修改后的内容')
 91 # 10、写一个函数完成三次登陆功能,再写一个函数完成注册功能
 92 def func_d():
 93     count = 3
 94     while count > 0:
 95         username = input('请输入您的用户名:').strip()
 96         password = input('请输入您的密码:').strip()
 97         if username == 'fuyong' and password == '123':
 98             print('恭喜,登录成功!')
 99             break
100         else:
101             print('用户名或者密码错误,请重新输入。您还有%s次机会!'%(count-1))
102             count -= 1
103             continue
104 
105 def func_z():
106     user_dic = {}
107     username = input('请输入您要注册的用户名:').strip()
108     password = input('请输入您要注册的密码:').strip()
109     user_dic.update({username:password})
110     print('恭喜,注册成功!')
111 func_d()
112 func_z()
113 #
114 # 明日内容:
115 # 函数的动态参数:http://www.cnblogs.com/Eva-J/articles/7125925.html
116 # 函数的进阶内容:http://www.cnblogs.com/Eva-J/articles/7156261.html
117 #
118 # 默写内容:
119 # def my_len(lst):
120 #     count = 0
121 #     for i in lst:
122 #         count+=1
123 #     return count
124 #
125 # l = [1,2,3,4]
126 # len_count = my_len(l)
127 # print(len_count)
128 #

澳门葡京备用网址 11

 

    1. 哪些是函数
    1. 函数定义, 函数名, 函数体以及函数的调⽤
    1. 函数的再次回到值
    1. 函数的参数

  二.在函数中间依然末尾写return,再次回到的是None

 

⼀. 什么是函数
笔者们能够先去定义⼀个事
情恐怕功效. 等到须要的时候一向去⽤就好了.
那么那⾥定义的东⻄正是⼀个函数.

  3.在函数中写return值,重临一个值

一、函数的效益

函数能够让大家代码结构更清楚,而且防止了代码的重复,冗余,使一段代码或然功效可以屡屡的被调用,大大提升了开支效用

函数:
对代码块和作用的包裹和定义

  四.在函数中得以重临多少个重回值,return 值1,值2,值三….,接收的是元组

 

def yue():
    print("Hello")
    print("你好")
    print("再见")
    return
    print("拜拜")  #这句话不会被执行
yue()

 

澳门葡京备用网址 12

 

二、函数的定义

澳门葡京备用网址 13

def 函数名(参数1,参数2,*args,默认参数,**kwargs):
    """注释:函数功能和参数说明"""
    函数体
    ……
    return 返回值

1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
    参数可以定义多个,也可以不定义。
    参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
    如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None

澳门葡京备用网址 14

实举个例子下:

澳门葡京备用网址 15

1 def my_max(x,y):
2     '''比较两个值的大小,返回最大的那个数'''
3     if x > y:
4         return x
5     if x < y:
6         return y
7     else:
8         return '%s=%s'%(x,y)

澳门葡京备用网址 16

 

澳门葡京备用网址 17

三.参数

3、函数的调用

调用函数很简单,便是曾经定义的函数名加括号,借使此函数须求参数,那括号内将在出席必要传的参数。如,调用下边定义的my_max函数的方法如下:

1 my_max(5,2)

实行流程:

  函数推行的时候给函数字传送递新闻.

四、函数的再次回到值

大家只需求在函数的结尾加上三个return,return后边写上您要回去的值就能够了。

接下去,我们就来研商一下以此return的用法。

return关键字的机能

  return
是一个要害字,在pycharm里,你会合到它成为法国红了。你不可能不一字不差的把那些单词给背下来。

  那些词翻译过来正是“重回”,所以大家管写在return前边的值叫“重返值”

  要钻探重返值,大家还要精晓再次回到值有二种情景:分别是未曾重回值、再次来到二个值、重回多少个值

并没有再次回到值

  不写return的状态下,会默许再次来到一个None,等同于 return None

有多个再次回到值

  return
前边跟上重回值就可以,调用函数的话能够用贰个变量来接过这些再次来到值(就是将函数施行完将来的归来值赋给这一个变量),如下:

1 def my_sum(x,y):
2     '''求两个数字的和,返回两数之和'''
3     return x+y
4 
5 sum = my_sum(3,2)   #调用函数
6 print(sum)          #结果:5

有七个重回值

  假使有几个重回值的话只需在return前面依次跟上再次回到值,用逗号隔开分离。

  调用函数
的时候能够用贰个变量来接收(此时重临的是二个元祖,赋值给此变量),也得以用三个变量来收纳,此时回来值会按变量的依次,一壹赋值(变量数要跟重回值的数目相等),如下:

澳门葡京备用网址 18

1 def getNum():
2     '''返回三个数字的函数'''
3     return 1,3,6
4 
5 res = getNum()   #用一个变量接收返回值
6 print(res)        #结果是:(1, 3, 6)
7 
8 a,b,c = getNum()  #用一个变量接收返回值

9 print(a,b,c)      #结果是:1 3 6

澳门葡京备用网址 19

澳门葡京备用网址 20

  形参:函数注解的地方的变量

伍、函数的参数

三. 函数的回到

  实参::函数调用的时候给的具体的值

函数的参数分为形参和实参。简来讲之,形参便是概念函数的时候的参数,而实参正是调用函数的时候传递的参数

执⾏完函数之后. 大家能够使⽤return来回到结果. 函数中return的使⽤:

  传参:把实参交给形参的长河

 

而在调用函数进行传值的时候,传参格局又分为地方传参和要害字传参。

澳门葡京备用网址 21

  1.实参:

岗位传参是比照职位伸开传值(此时,解释器会依据顺序,将实参一 1对应赋值给形参),

重回值能够是多少个结实:

    壹.地点参数,依据形参的参数地点,给形参传值

def cat(cat1,cat2):
    print("这是一只很可爱的%s"% cat1 )
    print("这是一只%s颜色的猫"% cat2 )

cat("加菲猫","灰色")

 

澳门葡京备用网址 22

 

最首要字传参是根据注重字张开传值(那种传参格局是一向将实参以赋值的艺术传给形参,如x=一,y=2)

澳门葡京备用网址 23

    二.第二字参数,依照形参的名字给形参传值

def cat(cat1,cat2):
    print("这是一只很可爱的%s"% cat1 )
    print("这是一只%s颜色的猫"% cat2 )

cat(cat2 = "黄色",cat1 = "波斯猫")

 

澳门葡京备用网址 24

 

职位传参的亮点是便宜,只需11写出需要传递的实参就行,关键之传参的优点是能够改动参数顺序。

如下:

1     '''求两个数字的和,返回两数之和'''
2     return x+y
3 
4 my_sum(3,2)      #位置传参
5 my_sum(x=3,y=2)  #关键字传参

除此以外,还有一种参数是暗中同意参数,是指在概念函数的时候,个中3个依然四个参数已经钦赐了默许值

那种状态下在调用函数实行传参的时候,依旧能够传递实参给此形参,假诺不传,此参数的值即为暗中同意值,如下:

1 def user_info(name,sex='男'):
2     '''用户信息'''
3     print('%s的性别是%s'%(name,sex))
4 
5 user_info('小明')     #结果为:小明的性别是男生 。不用指定的情况下,默认是男
6 user_info('小花','女')#结果是:小花的性别是女。    传参的情况下,会覆盖默认值

 

别的,还有一种非凡的参数,他得以吸收任何数据的参数,称为动态参数

  而动态参数又有三种,1种是参数名前加三个星号 ” * ”
那种参数能够吸收接纳不限数据的地方参数,然后组成3个元祖

  另一种是动态参数是参数名前加八个星号 “ ** ” 
那种参数还可以不限数量的基本点字参数,然后组成二个字典

  如下:

澳门葡京备用网址 25

1 def func(*args,**kwargs):
2     print(args)
3     print(kwargs)
4 
5 func(1,2,3,a='a',b='b',c='c')
6 #结果为:
7 # (1, 2, 3)
8 # {'b': 'b', 'c': 'c', 'a': 'a'}

澳门葡京备用网址 26

内需注意的是:要是一个函数的参数蕴涵:地方参数,默许参数,以及动态参数
*args 和
**kwargs,那么他们的次第应该是:(地点参数,*args,默许参数,**kwargs)

 

总结⼀下:

    3.混合参数,即用地点参数,也用关键字参数

def food(good_food,listgood_food,NO_food):
    print(good_food,listgood_food,NO_food)

food("汉堡","饼干",NO_food="冰激凌")

澳门葡京备用网址 27

 

6、作业演练

 

  

澳门葡京备用网址 28

澳门葡京备用网址 29

  1 # 必做题:
  2 # 1、整理函数相关知识点,画思维导图,写博客
  3 # 2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
  4 def func(li):
  5     li1 = []
  6     for i in range(len(li)):
  7         if i % 2 == 1:
  8             li1.append(li[i])
  9     return li1
 10 
 11 l = func(['a','b','c','d','e'])
 12 print(l)
 13 
 14 # 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
 15 def func1(o):
 16     if len(o) > 5:
 17         return True
 18     else:
 19         return False
 20 print(func1('abc'))
 21 print(func1((1,2,3,4,5)))
 22 print(func1([1,2,3,4,5,6,7]))
 23 
 24 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
 25 def func2(l):
 26     if len(l) > 2:
 27         l = l[0:2]
 28     return l
 29 print(func2(['a','b','c']))
 30 # 5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
 31 def func3(str):
 32     count_i = 0
 33     count_s = 0
 34     count_sp = 0
 35     count_o = 0
 36 
 37     for i in str:
 38         if i.isdigit():
 39             count_i += 1
 40         elif i.isalpha():
 41             count_s += 1
 42         elif i == ' ':
 43             count_sp += 1
 44         else:
 45             count_o += 1
 46     return count_i,count_s,count_sp,count_o
 47 
 48 i,s,sp,o = func3('B e32 \# ~sd')
 49 print(i,s,sp,o)
 50 # 6、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
 51 def func4(s):
 52     if ' ' in s:
 53         return True
 54     else:
 55         return False
 56 print(func4('ab c'))
 57 print(func4(['a',' ','c']))
 58 7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
 59     dic = {"k1": "v1v1", "k2": [11,22,33,44]}
 60     PS:字典中的value只能是字符串或列表
 61 def func5(dic):
 62     dic_new = {}
 63     for k,v in dic.items():
 64         if len(v) > 2:
 65             v_new = v[0:2]
 66         dic_new.update({k:v_new})
 67     return dic_new
 68 dic = {"k1": "v1v1", "k2": [11,22,33,44]}
 69 print(func5(dic))
 70 # 8、写函数,接收两个数字参数,返回比较大的那个数字。
 71 def my_max(x,y):
 72     if x > y:
 73         return x
 74     elif x < y:
 75         return y
 76     else:
 77         return '两者同样大'
 78 print(my_max(3,6))
 79 print(my_max(2,2))
 80 
 81 选做题:
 82 9、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。
 83 import os
 84 def funx(file,msg):
 85     old_file = file
 86     with open('new_file.txt','w',encoding='utf-8') as new_f:
 87         new_f.write(msg)
 88     os.remove(old_file)
 89     os.rename('new_file.txt',old_file)
 90 funx('test.txt','这是修改后的内容')
 91 # 10、写一个函数完成三次登陆功能,再写一个函数完成注册功能
 92 def func_d():
 93     count = 3
 94     while count > 0:
 95         username = input('请输入您的用户名:').strip()
 96         password = input('请输入您的密码:').strip()
 97         if username == 'fuyong' and password == '123':
 98             print('恭喜,登录成功!')
 99             break
100         else:
101             print('用户名或者密码错误,请重新输入。您还有%s次机会!'%(count-1))
102             count -= 1
103             continue
104 
105 def func_z():
106     user_dic = {}
107     username = input('请输入您要注册的用户名:').strip()
108     password = input('请输入您要注册的密码:').strip()
109     user_dic.update({username:password})
110     print('恭喜,注册成功!')
111 func_d()
112 func_z()
113 #
114 # 明日内容:
115 # 函数的动态参数:http://www.cnblogs.com/Eva-J/articles/7125925.html
116 # 函数的进阶内容:http://www.cnblogs.com/Eva-J/articles/7156261.html
117 #
118 # 默写内容:
119 # def my_len(lst):
120 #     count = 0
121 #     for i in lst:
122 #         count+=1
123 #     return count
124 #
125 # l = [1,2,3,4]
126 # len_count = my_len(l)
127 # print(len_count)
128 #

澳门葡京备用网址 30

 

  1. 遭逢return. 此函数甘休, 函数后⾯的东⻄将不会再执⾏

  2. return 再次来到值 关于再次来到值: 若是return什么都不写 只怕 ⼲脆不写return
    .那么重返的正是None 假若

小心:地点参数跟关键字参数混合使用时,地方参数必须在事关重大字参数前边,且对四个形参只好赋值一回

return后⾯写了⼀个值. 则调⽤者能够接过⼀个结果
假使return后⾯写了四个结实, 则调⽤者可以接收

  2.形参:

⼀个tuple, 调⽤者可以一向解构成八个变量 OK. 完美. 能够拿走结果了.
不过大家的约的⽅式是或不是有

    一.职分参数

点⼉难点吧?, 陌陌未来还能够约到 么?约不到了吧. 该换探探了.
那过两日探探也死掉了吗? 是否还会

    二.暗中认可值参数  先地方后暗中同意值

def lis(name,age,sex = "男"):
    print(name,age,sex)

lis("迪迦",1080,)
lis("赛亚",1024,"女")

 

澳门葡京备用网址 31

 

 

有⼀个代表品. 这你想. 有⼀个代表的.你就供给去改⼀下代码.
是否不太适合了. 最佳的⽅式是还是不是想

    三.动态参数(待补充)

  

 

⽤什么约就 ⽤什么约? ok. 大家能够透过函数的参数来给函数字传送递⼀些音信.

4. 函数的参数 参数,
函数在调⽤的时候钦点具体的⼀个变量的值. 正是参数. 语法:

def fun():
    print("你无情,你残酷,你无理取闹!")
    print("我哪里无情,哪里残酷,哪里无理取闹!")
    print("你就是无情,就是残酷,就是无理取闹!")
    return "你才无情,你才残酷,你才无理取闹!","我没有无情,没有残酷,没有无理取闹!","ending"

a,b,c = fun()
print(a)
print(b)
print(c)

参数:在函数执行过程中给函数才传递的信息
形参:在函数声明的位置,声明出来的变量
实参:在函调用过程中,实际你给函数传递的值

game(Internet,games):#形参
    print("打开手机")
    print("连上%s" % Internet)
    print("打开%s" % games)
    print("玩到手机关机!")
#函数的参数的个数没有限制
game("数据","王者荣耀")#实参
game("WiFi","刺激战场

瞩目参数的11:

mation(id,name,age,sex):
    print("序号:%s\n姓名:%s\n年龄:%s\n性别:%s" % (id,name,age,sex))

information(1,"corn",21,"男")#位置参数
information(id = 2,name = "corn1",age = 22,sex = "女")#关键字参数

information(3,"corn2",age = 23,sex = "不详")#混合参数:注意顺序,位置参数在前,关键字参数在后

#默认值参数和为主参数的混合参数:位置参数在前,默认值参数在后

def regist(id,name,age,sex = "男"):#默认值参数
    print("序号:%s\n姓名:%s\n年龄:%s\n性别:%s" % (id,name,age,sex))
regist(1,"corn",21)
regist(2,"corn1",22)
regist(3,"corn3",23

只顾, 必须先注明地点参数,
才能注脚默许值参数

 

作业:

二.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

def odd(lst):
    li = []
    for i in range(len(lst)):
        if i%2 != 0:
            li.append(lst[i])
    return li

a = odd([1,2,3,4,5,6,7,8,9])
print(a)

三.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

def i(lst):
    if len(lst) > 5:
        return"长度大于5"
    else:
        return"长度不大于5"

a = i([1,2,3,4,5,6])
print(a)

四.写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。

def i(lst):
    if len(lst) > 2:
        return lst[0],lst[1]
    else:
        return"列表长度不大于2"
a = i([1,2,3])
print(a)

五,写函数,计算传入函数的字符串中, 数字、字母、空格 以及其他内容的个数,并返回结果。

def time(l):
    num = 0
    zm = 0
    blank = 0
    other = 0
    for i in l:
        if i.isdigit() == True:
            num += 1
        elif i.isalpha() == True:
            zm += 1
        elif i == " ":
            blank += 1
        else:
            other += 1
    return "数字出现了%s次,字母出现了%s次,空格出现了%s次,其他出现了%s次" % (num,zm,blank,other)
a = time("1 2 3 4 5 6 a,b,c,d,e,f,")
print(a)

六,写函数,接收两个数字参数,返回比较大的那个数字。

def n(num,num1):
    if num > num1:
        return num
    elif num < num1:
        return num1
    else:
        return"两个数一样大"

a = n(32,34)
print(a)

七.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
PS:字典中的value只能是字符串或列表

dic = {"k1": "v1v1", "k2": [11,22,33,44]}
def zd(dic):
    for i in dic:
        if len(dic[i]) > 2:
            dic[i] = dic[i][0:2]
    return dic

a = zd({"1":"dasd","2":[1,2,3,4,5,6],"3":"你好!"})
print(a)

八,写函数,此函数只接收一个参数且此参数必须是列表数据类型,
此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列
表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典
为 {0:11,1:22,2:33}。

def d(lst):
    dic = {}
    for i in range(len(lst)):
        dic[i] = lst[i]
    return dic

a = d([11,22,33,44,55,66,77,88])
print(a)

九,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,
然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。

def w(name,sex,age,edu):
    f = open("student_msg",mode='w',encoding="utf-8")
    f.write("姓名:%s\n性别:%s\n年龄:%s\n学历:%s" % (name,sex,age,edu))
    f.flush()
    f.close()

w("corn","男",21,"专科")

 十,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。

def func(name, age,edu,sex ="男"):
    f = open("student.msg", mode="a", encoding="utf-8")
    f.write(name+"_"+str(age)+"_"+sex+"_"+edu+"\n")
    f.flush()
    f.close()


while 1:
    content = input("请问. 是否要录入学生信息, 输入q退出:")
    if content.upper() == "Q":
        break
    n = input("请输入名字:")
    a = input("请输入年龄:")
    s = input("请输入性别:")
    e = input("请输入学历:")
    if s == "":
        func(n,a,e)
    else:
        func(n,a,e,s)

 

 

十一,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。

def mod(r,m,n):
    import  os
    with open(r,mode="r",encoding="utf-8")as f, \
            open("a1.txt",mode="w",encoding="utf-8")as f1:
        for line in f:
            s = line.replace(m,n)
            f1.write(s)
    os.remove(r)
    os.rename("a1.txt",r)

mod("a.txt","我不好!","我很好!")

十二,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)

def dl():
    count = 3
    while count > 0:
        account = input("请输入你的账号:")
        password = input("请输入你的密码:")
        count -= 1
        for i in dic:
            if account == i and password ==dic[i]:
                print("登录成功")
                return

        print('账号或者密码错误,请重新输入(还剩%s次机会):' % count)
        x = input("按Q返回上一菜单,其他键继续:")
        if x.upper().strip() == "Q":
            return


def login():
    while 1:
        account = input("请输入你注册的账号(6位以上):")
        password = input("请输入你的密码:")
        password1 = input("请重新输入一遍你的密码:")
        if len(account) <= 6 or account.isdigit() == False:
            print("账号不合法!请重新输入!")
        elif password == password1:
            dic[account] = password
            print("恭喜你,注册成功!")
            return
        else:
            print("你输入的两次密码不匹配,请重新输入")
            x = input("按Q返回上一菜单,其他键继续:")
            if x.upper().strip() == "Q":
                break
dic = {}
menus = ("1, 登录", "2, 注册", "3, 退出")
while 1:
    for item in menus:
        print(item)
    s = input('请输入您要选择的菜单项:')
    if s == '1':
        dl()
    elif s == "2":
        login()
    elif s == "3":
        break
    else:
        print("指令错误!")

2018-07-13  15:31:23

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website