首页 > 其他分享 >第八章函数及常用的内置函数

第八章函数及常用的内置函数

时间:2024-07-18 19:41:28浏览次数:16  
标签:10 内置 20 函数 第八章 lst 参数 print def

函数的定义和调用

1、内置函数
输出函数print()
输入函数input()
列表定义的函数list()
2、自定义函数

def 函数名称(参数列表):
    函数体
   [return返回值列表]

3、函数调用
函数名(参数列表)

不带返回值的函数直接调用,带返回值的函数调用后要将结果保存到变量中

点击查看代码
示例8-1函数定义及调用
def get_num(num):#num叫做形式参数
    s=0
    for i in range(1,num+1):
        s+=i
    print(f'1到{num}的累加和为:',s)

#函数的调用
get_num(10)#1-10之间的累加和 ,10为实际参数
get_num(100)#1-100之间的累加和,100为实际参数
get_num(1000)#1-1000之间的累加和,1000为实际参数



函数的参数传递

1、位置参数
调用时的参数个数和顺序必须与定义的参数个数和顺序相同

2、关键词参数
函数调用时,使用"形参名称=值“的方式进行传参,传递参数的顺序可以和定义时的不同

3、默认值参数
在函数定义时,直接对形式参数进行赋值,在调用时如果该参数不传值,将使用默认值,如果该参数传值,则使用传递的值

点击查看代码
示例8-2位置参数的使用
def happy_birthday(name,age):
    print('祝'+name+'生日快乐')
    print(str(age)+ '生日快乐')

#调用
#happy_birthday('娟子姐')#TypeError: happy_birthday() missing 1 required positional argument: 'age'
#happy_birthday(18,'娟子姐')#TypeError: can only concatenate str (not "int") to str
happy_birthday('娟子姐',18)


示例8-3关键字传参
def happy_birthday(name,age):
    print('祝'+name+'生日快乐')
    print(str(age)+ '生日快乐')

#关键字传参
happy_birthday(age=18,name='娟子姐')

#happy_birthday(age=18,name1='娟子姐')#定义形参为name。TypeError: happy_birthday() got an unexpected keyword argument 'name1'

happy_birthday('陈美美',age=18)#正常执行,可以使用位置传参也可以使用关键字传参
#happy_birthday(name='陈美美',18)#SyntaxError: positional argument follows keyword argument
#违反了位置参数在前,关键字参数在后

示例8-4默认值参数的使用
def happy_birthday(name='娟子姐',age=18):
    print('祝'+name+'生日快乐')
    print(str(age)+ '生日快乐')
#调用
happy_birthday()#不用传参
happy_birthday('陈美美')#位置传参
happy_birthday(age=19)#关键字传参,name采用默认值

#happy_birthday(19)#19会赋值给那个变量,如果采用位置传参19被传给了name。TypeError: can only concatenate str (not "int") to str
def fun(a,b=20):#a作为位置参数,b为默认参数
    pass

#def fun(a=20,b):#报错了,语法错误,当位置参数与默认值参数同时存在时,位置参数在后会报错
    #pass
    
#当位置参数与关键字参数同时存在时,位置参数在前,默认参数在后

4、可变参数

点击查看代码
示例8-5可变参数的使用
#个数可变的位置参数
def fun(*para):
    print(type(para))
    for item in para:
        print(item)

#调用
fun(10,20,30,40)
fun(10)
fun(30,40)
fun([11,22,33,44])#实际上传递的是一个参数
#在调用时,参数前面加一颗星,分别将列表进行解包
fun(*[11,22,33,44])

#个数可变的关键字参数
def fun2(**kwpara):
    print(type(kwpara))
    for key,value in kwpara.items():
        print(key,'--->',value)

#调用
fun2(name='娟子姐',age=18,height=170)#关键字参数


d={'name':'娟子姐','age':18,'height':170}
#fun2(d)#TypeError: fun2() takes 0 positional arguments but 1 was given
fun2(**d)


函数的返回值

点击查看代码
示例8-6函数的返回值
#函数的返回值、
def calc(a,b):
    print(a+b)


calc(10,20)
print(calc(10,20))#None


def calc2(a,b):
    s=a+b
    return s #将s返回给函数的调用处去处理

print('-'*20)
get_s=calc2(1,2) #存储到变量中
print(get_s)

get_s=calc2(calc2(1,2),3)#1+2+3  先去执行calc2(1,2)返回结果为3,再去执行clac2(3,3)
print(get_s)

#返回值可以是多个
def get_sum(num):
    s=0#累加和
    odd_sum=0#奇数和
    even_sum=0#偶数和
    for i in range(1,num+1):
        if i % 2 != 0:
            odd_sum+=i
        else:
            even_sum+=i
        s+=i
    return odd_sum,even_sum,s#三个值



result=get_sum(10)
print(type(result))
print(result)

#解包赋值
a,b,c=get_sum(10) #返回三个值
print(a)
print(b)
print(c)


变量的作用域

变量的作用域:是指变量起作用的范围,根据范围作用的大小可以分为局部变量和全局变量

点击查看代码
示例8-7局部变量的作用
def calc(a,b):
    s=a+b
    return s


result=calc(10,20)
print(result)
#print(a,b,s) #a,b是函数的参数,参数是局部变量,s函数中定义的变量,局部变量

示例8-8全局变量的使用
a=100 #全局变量

def calc(x,y):
    return a+x+y
print(a)
print(calc(10,20))
print('-'*30)

def calc2(x,y):
    a=200 #局部变量,局部变量名称与全局变量名称相同
    return a+x+y #a是全局变量还是局部变量? 局部变量,当全局变量和局部变量的名称相同时,谁的优先级高呢? 局部变量

print(calc2(10,20))
print(a)
print('-'*30)

def calc3(x,y):
    global s #s在函数中定义的变量,但是使用了global,这个变量s变成了全局变量
    s=300 #声明和赋值必须分开执行、
    return s+x+y

print(calc3(10,20))
print(s)

匿名函数的使用

result=lambda 参数列表:表达式

点击查看代码
示例8-9匿名函数的使用
def calc(a,b):
    return a+b

print(calc(10,20))

#匿名函数
s=lambda a,b:a+b #s表示就是一个匿名函数
print(type(s))
#调用匿名函数
print(s(10,20))
print('-'*20)

#列表的取值操作
lst=[10,20,30,40,50]
for i in range(0,len(lst)):
    print(lst[i])
print()
print('-'*20)

for i in range(len(lst)):
    result=lambda x:x[i] #根据索引取值,result的类型为function,x是形式参数
    print(result(lst))#lst是实际参数
print('-'*20)

#
student_scores=[
    {'name':'陈苗苗','score':98},
    {'name':'王一一','score':95},
    {'name':'张天乐','score':100},
    {'name':'白雪儿','score':65},
]

#对列表中的元素进行排序,排序规则是字典中的成绩
student_scores.sort(key=lambda x:x.get('score'),reverse=True)
print(student_scores)
print('-'*20)



递归函数

点击查看代码
示例8-10递归函数计算n!
def fac(n): #n的阶乘 N!=N*(N-1)!......1!=1
    if n==1:
        return 1
    else:
       return n*fac(n-1) #自己调用自己

print(fac(5))#5!=5*4*3*2*1=120


斐波那契数列

点击查看代码
示例8-11斐波那契数列
def fac(n):
    if n==1 or n==2:
        return 1
    else:
     return fac(n-1)+fac(n-2)

print(fac(9))#第9位上的数字

for i in range(1,10):
    print(fac(i),end='\t')
print()


常用的内置函数

点击查看代码
示例8-12数据类型函数的使用
print('非空字符串的布尔值:',bool('hello'))
print('空字符串的布尔值:',bool(''))
print('空列表的布尔值:',bool([]))
print('空列表的布尔值:',bool(list()))
print('空元组的布尔值:',bool(()))
print('空元组的布尔值:',bool(tuple()))
print('空集合的布尔值:',bool(set()))
print('空字典的布尔值:',bool({}))
print('空字典的布尔值:',bool(dict()))
print('-'*20)

print('非0的布尔值:',bool(123))
print('整数0的布尔值:',bool(0))
print('浮点数0.0的布尔值:',bool(0.0))
print('-'*20)

#将其他类型转化为字符串类型
lst=[10,20,30]
print(type(lst),lst)
s=str(lst)
print(type(s),s)
#float类型转为int类型
print('-'*30,'float类型转为int类型:','-'*30)
print(int(98.7)+int('90'))

#注意事项
#print(int('98.7'))#ValueError: invalid literal for int() with base 10: '98.7'
#print(int('a'))#ValueError: invalid literal for int() with base 10: 'a'

print('-'*30,'int类型转为float类型:','-'*30)
print(float(90)+float('3.14'))

s='hello'
print(list(s))

seq=range(1,10)
print(tuple(seq))
print(set(seq))
print(list(seq))

点击查看代码
示例8-13数学函数的使用
print('绝对值:',abs(100),abs(-100),abs(0))
print('商和余数:',divmod(13,4))
print('最大值:',max('hello'))
print('最大值:',max([10,4,56,78,4]))
print('最小值:',min('hello'))
print('最小值:',min([10,4,56,78,4]))
print('求和:',sum([10,34,45]))
print('x的y次幂:',pow(2,3))

#四舍五入
print(round(3.1415926))#round 只有一个参数,保留整数
print(round(3.9))
print(round(3.1415926,2))#2表示保留两位小数
print(round(314.15926,-1))#314,-1位对个位进行四舍五入
print(round(314.15926,-2))#314,-2位对十位进行四舍五入

点击查看代码
示例8-14迭代器操作函数的使用
lst=[54,56,77,4,567,34]
#(1)排序
asc_lst=sorted(lst)#升序
desc_lst=sorted(lst,reverse=True)#降序
print('原列表',lst)
print('升序:',asc_lst)
print('降序:',desc_lst)

#(2)reverse 反向
new_lst=reversed(lst)
print(type(new_lst))#<class 'list_reverseiterator'>
print(list(new_lst))

#(3)zip
x=['a','b','c']
y=[10,20,30]
zipobj=zip(x,y)
print(type(zipobj))#<class 'zip'>
#print(list(zipobj))

#(4)enumerste
enum=enumerate(y,start=1)
print(type(enum))#<class 'enumerate'>
print(tuple(enum))

#(5)all()
lst2=[10,20,'',30]
print(all(lst2))#False,空字符串的布尔值为False
print(all(lst))#True

#(6)any
print(any(lst2))#True

#(7)next
print(next(zipobj))#('a', 10)
print(next(zipobj))#('b', 20)
print(next(zipobj))#('c', 30)

#(8)filter
def fun(num):
   return num%2==1 #可能为True或False

obj=filter(fun,range(10)) #将range(10),0-9的整数,都执行一次fun操作
print(list(obj)) #[1,3,5,7,9]


#(9)map
def upper(x):
    return x.upper()

new_lst2=['hello','world','Pathon']
obj2=map(upper,new_lst2)
print(list(obj2))

点击查看代码
示例8-15其他函数的使用
#format()
print(format(3.14,'20'))#数值型默认右对齐
print(format('hello','20'))#字符串型默认左对齐
print(format('hello','*<20'))#<左对齐,*表示的是填充符,20表示的是显示的宽度
print(format('hello','*>20'))
print(format('hello','*^20'))


print(format(3.1415926,'.2f'))#3.14
print(format(20,'b'))
print(format(20,'o'))
print(format(20,'x'))
print(format(20,'X'))

print('-'*40)
print(len('helloworld'))
print([10,20,30,40,50])

print('-'*40)
print(id(10))
print(id('helloworld'))
print(type('hellow'),type(10))
print('-'*40)

print(eval('10+30'))
print(eval('10>30'))


点击查看代码
#我的思路
#随机产生10个元素存储到列表
import random
lst=[]
for i in range(10):
  rand=random.randint(1,100)
  lst.append(rand)
print(lst)

#获取列表中元素的最大值
def lst_name(n):
    n.sort(reverse=True)
    return n[0]

print(lst_name(lst))


#老师的思路
import random
def get_max(lst):
    x=lst[0]#x存储的最大值
    #遍历
    for i in range(1,len(lst)):
        if lst[i]>x:
            x=lst[i]
    return x

#调用
lst=[random.randint(1,100) for i in range(10)]
print(lst)
#计算列表元素的最大值
max=get_max(lst)
print(max)

点击查看代码
实战二
#我的思路
str=input('请输入一个字符串:')
lst=[]
for i in range(0,len(str)):
    if str[i].isdigit():
        lst.append(str[i])
for j in range(0,len(lst)):
    lst[j]=int(lst[j])
print(lst)

def num(lst):
    sum=0
    for i in range(0,len(lst)):
        sum+=lst[i]
    return sum

sum1=num(lst)
print(sum1)


#老师思路
def get_digit(x):
    s=0 #存储累加和
    lst=[]
    for item in x:
        if item.isdigit():
         lst.append(int(item))

    #求和
    s=sum(lst)
    return lst,s

#准备函数的调用
s=input('请输入一个字符串:')
#调用
lst,x=get_digit(s)
print('提取的数字列表为:',lst)
print('累加和为:',x)


点击查看代码
实战三
#我的思路
str=input('请输入一个字符串:')
def fun(x):
    lst=[]
    for item in x:
        if item.islower():
            lst.append(item.upper())
        elif item.isupper():
            lst.append(item.lower())
        else:
            lst.append(item)
    return lst

lst1=fun(str)
for i in range(0,len(lst1)):
    print(lst1[i],end='')
print()


#老师思路
def lower_upper(x):#x是一个字符串,形式参数
    lst=[]
    for item in x:
        if 'A'<= item <= 'Z':
             lst.append(chr(ord(item)+32))  #ord()将字母转为Unicode码整数,加上32,char将整数转为字符
        elif 'a'<= item <= 'z':
            lst.append(chr(ord(item)-32))
        else:
            lst.append(item)
    return ''.join(lst)

#准备调用
s=input('请输入一个字符:')
new_s=lower_upper(s)
print(new_s)


点击查看代码
实战四
def get_find(s,lst):
    for item in lst:
        if item==s:
            return True
    return False
lst=['hello','world','pathon']
s=input('请输入您要判断的字符串:')
result=get_find(s,lst)
print('存在' if result else '不存在')#if...else的简写,三元运算符 if result==True if result 利用对象的布尔值

标签:10,内置,20,函数,第八章,lst,参数,print,def
From: https://www.cnblogs.com/pl-blog1/p/18308315

相关文章

  • 扩展 KMP/exKMP(Z 函数)学习笔记
    声明本文章转载自shangruolin的博客,已经过作者(存疑)同意,帮TA宣传一下。扩展KMP/exKMP(Z函数)学习笔记兼P10479匹配统计题解。LCP:最长公共前缀。Z函数,又称扩展KMP(exKMP),能够在\(O(n)\)的时间内求出一个字符串与其所有后缀的LCP的长度。定义\(z_i\)为字符串\(s\)......
  • 【算法】JZ30 包含min函数的栈
    1.概述描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数,输入操作时保证pop、top和min函数操作时,栈中一定有元素。此栈包含的方法有:push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素......
  • [php命令执行函数]详解各种php命令执行函数
    如下几种命令执行函数:目录systemexcpassthrushell_exec反引号``popensystemsystem函数简介:用于执行命令语法形式:system(string$command,int$return_var=?)command:必选参数,字符类型,被system函数执行的命令,如lsreturn_var:可选参数,整数类型,如果提供此参数,则com......
  • idea内置数据库 + sql语句库表操作
    sql语句--查询所有数据库showdatabases;--ddl:表结构--创建:基本语法(无约束)--注释:comment'id,唯一标识'createtabletb_user(idintcomment'id,唯一标识',usernamevarchar(20)comment'用户名',namevarchar(10)comment'姓名',......
  • 虚函数
    多态(polymorphism)是面向对象编程语言的一大特点,而虚函数是实现多态的机制。其核心理念就是通过基类访问派生类定义的函数。多态性使得程序调用的函数是在运行时动态确定的,而不是在编译时静态确定的。使用一个基类类型的指针或者引用,来指向子类对象,进而调用由子类复写的个性化的虚......
  • python 内置类型简述(4) —— 集合映射类(set、frozenset、dict)
    注:Iterable[int]为任一元素为int类型的可迭代对象,如列表[1,2,3]注:set()为一个集合实例,可用任一列表替换(如{‘asd’}),frozenset()、dict()同理注:set|frozenset|dict表示参数可为set、frozenset、dict任一类型,set()|frozenset()|dict()同理1.新建字典{k......
  • 三角函数
    三角函数学习笔记三角形标准记号三角函数的定义正弦$$\sin(α)=\frac{对边}{斜边}=\frac{a}{c}$$余弦$$\cos(α)=\frac{邻边}{斜边}=\frac{b}{c}$$正切$$\tan(α)=\frac{对边}{邻边}=\frac{a}{b}$$余切$$\cot(α)=\frac{邻边}{对边}=\frac{b}{a}$$正......
  • idea内置数据库
    ————打开数据库点击右侧database 选择MySQL数据库 输入user和password,点击testconnection测试链接,如果成功,点击ok保存配置 之后会跳转到这样一个界面 此时右侧出现了一个数据库,左侧出现了一个控制台 将鼠标放在1of19上并点击(19是MySQL中数据库的数......
  • 母函数与高斯和
    前置知识:单位根(为了偷懒,基本将所有的\(\omega\)都写成了\(w\))CP1我们很经常遇到的一个问题是\(xy~mod~n\)的求解,母函数在处理这样的一些问题时会有效(更优先的是寻求\(xy\)的性质或者利用带余除法)例1设\(p>2\)是素数,\(p\nmidabcd\),满足\(\{\frac{ra}p\}+\{\frac......
  • PSINS工具箱函数介绍——gpsplot
    介绍gpsplot函数的原理和作用程序源码functiongpsplot(vpGPS,ts)%GPSplot.%%Prototype:gpsplot(vpGPS,ts)%Inputs:vpGPS-[vnGPS,posGPS,tag,t]or[posGPS,tag,t]%thetagcolumnmaynotexist.%ts-GPSsamplinginterva......