数据分析入门_PART1python基础语法_CH06函数

'''
【课程6.1】  自定义函数

如何创建函数?牢记4点1def语句2函数名及参数3冒号4缩进
默认参数
def f(x,n = 2):

可变(数量)参数
def f(*x):


'''
'\n【课程6.2】  自定义函数\n\n如何创建函数?def语句\n默认参数\ndef f(x,n = 2):\n\n可变参数\ndef f(*x):\n'
# 定义函数
#注函数的形式参数def f(x1,x2):是作用域只在此函数内的参数
#所有形式参数一定要在函数用到,如果用不到必须删除
def f(x):
    if x<5:
        print('值小于5')
    else:
        print('值大于等于5')
f(10)
值大于等于5
# 关于retuen 代表了函数的返回值

#无return
def f1(x):
    y=2**x

#有return
def f2(x):
    y=2**x
    return y

print(f1(2),f2(2))
None 4
# 默认参数
#直接在def f(x1=2):形参中赋值
#此函数调用时既可以重新给默认参数赋值,也可以不赋值使用默认参数
def f(x,n=2):
    return(x**n)
print(f(3))
print(f(3,3))
9
27
#可变(数量)参数
#定义def f(*x): 注:只有在定义时*x 函数内部使用时直接用x
#调用函数 f(1,2,3,4,5)
#参数群在f函数内部数据结构 tuple(1,2,3,4,5)

def f(*x):
    print(x)
    return(x)
f(1)
f(1,2)
f(1,2,3,[23,'s',2])
print(type(f('a','b')))
(1,)
(1, 2)
(1, 2, 3, [23, 's', 2])
('a', 'b')

'''
小作业
① 函数f(x),输入一个字符串,分别print出每个字母
② f(x,y,z),函数内部算法:生成 ((x+y)(x-y))*z
③ 编写一个求平均值的函数 f(*m)
④ 定义一个函数,用于求矩形面积、圆形面积
⑤ 定义一个函数,函数的作用是把输入的列表变成一连串字典的key,并生成字典,需要用input输入
'''
###answer

#① 函数f(x),输入一个字符串,分别print出每个字母
def f(lst):
    for i in lst:
        print(i)
lst=input('input a string')
f(lst)    
input a string666
6
6
6
#②f(x,y,z),函数内部算法:生成 ((x+y)(x-y))*z
def f(x,y,z):
    return ((x+y)*(x-y))*z
print(f(1,2,3))
-9
#③ 编写一个求平均值的函数 f(*m)
def f(*m):
    flag=1
    for i in m:#注m是一个tuple
        if not str(i).isnumeric():
            flag=0
    if flag==1:        
        return sum(m)/len(m)
    else:
        print('input worng')
print(f(1,2,3,4,'s'))
input worng
None
#④ 定义一个函数,用于求矩形面积、圆形面积
def areaofrec(a,b):
    return a*b

def areaofcir(r):
    return 3.14*r**2

print(areaofrec(1,2),areaofcir(5))
2 78.5
#⑤ 定义一个函数,函数的作用是把输入的列表变成一连串字典的key,并生成字典,需要用input输入

#注 eval(str)函数作用脱掉str的‘’并执行该语句
#如
#>>> eval('pow(2,2)')
#4

lst=eval(input('请输入一个list'))
def f(lst):
    return dict.fromkeys(lst,'初始值')
print(f(lst))
请输入一个list[1,2]
100
{1: '初始值', 2: '初始值'}
'''
【课程6.2】  局部变量及全局变量
局部变量
1定义在函数内部
2以及在def f(x):定义的形式参数x
拥有一个局部作用域,即在函数f(x)内部有效,在函数外无效,局部变量对象在退出函数时自动销毁

全局部变量
1在函数外定义的变量
2在全体作用域有效
注如果在函数内部给一个函数外定义的全局量x=old赋值x=new,x只在函数内部=new,离开函数恢复x=old

全局变量a和函数def(b)定义时最好不要同名
如果同名全局a def(a)在函数内部将无法访问全局a
甚至全局变量a不需要定义形参b来向函数内部传参,因为函数内可以直接访问
之所以下例这种情况给全局变量定义形参来传参是为了是f(a)函数更独立,更通用
'''

def f(a):
    a='new'
    print("函数内m=%s"%a)
m='old'
f(m)
print('函数外m={}'.format(m))
函数内m=new
函数外m=old
#将局部变量变为全局变量
#如果希望函数在函数内的变化能保留到函数外需要将局部变量变为全局变量
#两种方法
#法1(推荐)直接在函数外定义该函数变量,然后再函数内部直接使用该全局变量改变即可1
#法2 在函数内使用全局变量前先声明global m(全局变量名)

def f():
    global m
    m='new'
   
m='old'
print('执行f前m的值=',m)
f()
print('执行f后m的值=',m)
执行f前m的值= old
执行f后m的值= new
'''
【课程6.3】  匿名函数Lambda

lambda 语句创建匿名函数。
格式 f=lambda var1,var2,var3:简单操作
注:lambda的简单操作只能有一行,多为运算,若操作涉及if for while等果断选择def

'''
def f1(a,b,c) :
    return a+b+c

f2=lambda a,b,c :a+b+c

print(f1(1,2,3),f2(1,2,3))
6 6
"""

小作业
① 用lambda创建一个求元素个数的匿名函数
② 定义一个函数,可将输入的所有数字从大到小依次排序
③ 定义一个函数,随机输入一个学生的成绩后,学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示,最后输出成绩评分
④ 定义一个函数,可统计出输入任意的字符中英文字母、空格、数字和其它字符的个数
"""
#① 用lambda创建一个求元素个数的匿名函数
f=lambda lst:len(lst)
print(f([1,2,3]))
3
#② 定义一个函数,可将输入的所有数字从大到小依次排序
def f(*x):
    return sorted(x,reverse=True)#x为tuple
print(f(1,2,3))
[3, 2, 1]
# ③定义一个函数,随机输入一个学生的成绩后,学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示,最后输出成绩评分

def f(gradelst):
    ranklst=[]
    sum=0
    for x in gradelst:
        if x>=90:
            ranklst.append('A')
        elif x>=60:
            ranklst.append('B')
        else :
            ranklst.append('C')
        sum+=x
    ave=sum/len(gradelst)
    return [ranklst,ave]#函数有多个返回值时把多个返回值写成list返回

print(f([80,99,53,57,88]))  
[['B', 'A', 'C', 'C', 'B'], 75.4]
#④ 定义一个函数,可统计出输入任意的字符中英文字母、空格、数字和其它字符的个数
#重点回顾
#str.isnumeric()
#str.isalpha()
#str.isspace()

def f (tstr):
    alpnum=0
    spanum=0
    numnum=0
    for i in tstr:
        if i.isnumeric():
            numnum+=1
        elif i.isalpha():
            alpnum+=1
        elif i.isspace():
            spanum+=1
        else:
            pass #pass 占位符啥代表都不做
    return [alpnum,spanum,numnum]
print(f('sdda556s6 56sd56s5d 56sd 595sda985ds 我说的是多情的啊 265ssd ds f5df'))
[32, 7, 21]

你可能感兴趣的:(数据分析入门_PART1python基础语法_CH06函数)