python的函数定义和调用方法有哪些特点,python函数里面可以定义函数吗
函数的定义意味着调用一个函数是一个封装的代码函数。定义时使用def
使用函数时,需要先调用它,然后才能使用。
DEF (): #函数的定义print( hello 1 )print( hello 2 )print( hello 3 )hello()#函数调用,直接输入函数名。
add():num 1=20nm 2=30 result=num 1 num2 print( % d % d=% d %(num 1,num 2,result)) add () # call
嵌套函数:
在函数中定义函数时,直接调用外部函数不能调用嵌套函数,需要在函数中调用:
def westos():print( westos )def python():print( python )python()westos()
而且python函数对外没有定义,只存在于westos函数中。
Def welcome(a): a是一个形参,用来接收用户输入的内容。print(hello ,a)welcome(laoli )是实参。用户输入什么,A就是什么欢迎( woain )
参数
参数:形式参数
参数:位置参数变量参数关键字参数的默认参数
自变量:由用户传输
""
参数def getinfo(name,age):定义参数print (name,age) getinfo (west ,11)并定义实际参数getinfo (11, west) getinfo (11, west ,12)
可以看出,形式参数是根据实际参数的位置来确定的,这是位置参数的特点,也有不合理的地方。
我们可以这样写:
默认参数pow(x,y)函数可以求x的y次方。
我们定义一个
我的幂(x,y=2): y=2是默认参数。当该位指定参数y时,y默认为2print (x * * y)。我的幂(4)没有指定ymypow(2,3)指定y=3。
2的三次方等于8。没问题
变量函数def mysum(*a): *可以接收多个变量,就是a: sum=item中item的变量函数sum=0。这是一个求和器打印(和)mysum(1,2,3,4,5)
Keyword def getinfo(name,age,**kwargs):用**kwargs表示关键字参数,它是一个字典,可以传输任何键值对。print(姓名,年龄)print(kwargs)getinfo(westos ,11,性别=男孩,爱好=[跑步,编码])
函数的返回值是函数的运算结果。Return可以返回一个元组。并且不执行return下面的命令。
return返回的值可以定义为变量。
My pow (x,y=2): return x * * y,x y print (hello world) #不会执行a,b=my power (3) #将返回值定义为变量print(a,b)
变量的范围分为局部变量和全局变量。
局部变量:在函数内定义的变量,只在函数内起作用。当该功能被执行时,该变量将被自动删除。
全局变量:始终有效
A=1print(outside:,id(a)) id可以检查变量在内存中的存储位置,这是全局变量def fun (): a=5print (inside:,id(a))。当A是局部变量时,该变量在函数执行后不起作用。检查印刷品的价值
当全局变量存储位置与局部变量存储位置不同时,最终打印的值与全局变量一致。
如何将局部变量转换成全局变量:全局
全局语句通常不用于声明变量。
练习:
* *案例1:
写一个函数cacluate,它可以接收任何数字并返回一个元组。
tuple的第一个值是所有参数的平均值,第二个值是所有大于平均值的数字。
def cacluate(* args):avg=sum(args)/len(args)up _ avg=[]for item in args:if item avg:up _ avg . append(item)return avg,up_avga=cacluate(1,2,3,4,5,6,7)print(a)
* *案例2:
编写一个接收字符串参数并返回一个元组的函数,“ehllowrold”
tuple的第一个值是大写字母的个数,第二个值是小写字母的个数。
def fun(x):upper _ count=0 low wer _ count=0 for I in x:if I . I supper():upper _ count=1 elif I . is lower():low wer _ count=1 else:continue return upper _ count,low wer _ counta=fun( hello WORLD )print(a)
练习3:
* *案例3:
写一个函数来接收一个列表(包括1到100之间的30个随机整数)和一个整数。
k,返回一个新列表。
功能要求:
-反转列表下标k前的对应元素;
-反转下标k后的元素顺序;
[1,2,3,4,5] 2 [2,1,5,4,3]
DEF FUN (li,k): if k0或klen(Li):return error k return Li[:k][:-1]Li[k:][:-1]返回值需要打印,否则看不到print (fun ([1,2,3,4,5])
练习4:
模拟轮盘彩票游戏
#轮盘分为一等奖、二等奖、三等奖三个部分;
#轮盘赌随机转动,
如果区间在[0,0.08]之间,代表一等奖,
如果范围在[0.08,0.3]之间,代表二等奖,
如果范围在[0.3,1.0]之间,代表三等奖,
本次模拟活动有1000人参与,模拟游戏时要准备好各级奖品的数量。
Import randomrewardDict={ 一等奖:(0,0.08),二等奖:(0.08,0.3),三等奖:(0.3,1)} def user fun():num=random . random()for k,v in rewarddict . items():if v[0]=num v[1]:return kresultDict={ } for I in range(1000):RES=user fun()if RES不在result dict:dict[RES]=1 else:result dict
练习5:
""
腾讯笔试编程题:
主题:
对于十进制正整数,将f(n)定义为其位数的平方和,例如:
f(13)=12 + 32=10
f(207)=22 + 02 72=53
给定下面三个正整数K,A,B,你需要计算N有多少个正整数满足a=n=b,
k*f(n)=n
输入:
第一行包含三个正整数k,a,b,k=1,a,b=1018,a=b;
输出:
输出相应的答案;
示例:
输入:51 5000 10000
输出:3 " "
# Define f(n)def f(n):n=str(n)sum=0 for item in n:sum=int(item)* * 2 return sum #建立一个数值列表s=input(输入你的数字)Li=[]for item in s . split():Li . append(int(item))#将用户输入的数字转换为整数# Solve k,a,b=lilist=[] #用于查看range (a,b 1)中的具体数字count=0f或n:if k * f(n)==n:#条件列表。附加(n)计数=
生成用法:
seq if中I的表达式.]s= 51 500 1000 Li=[]for item in s . split():Li . append(int(item))print(Li)k,a,b=liprint(k,a,b)
或生产方法:
s=51 500 1000k,a,b=[int(item)for item in s . split()]print(k,a,b)
#1常用方法为范围(1,11)中的I生成一列数字的平方Li=[]:Li。追加(I * * 2)打印(Li) # 2打印([I * * 2 for I in range (1,11)])生成方法打印([I * * 2 for I in range (1,11)]
l练习:
找出1到100之间的质数:
#先定义函数,调用def isprime (num): for n in range (2,num): if num% n==0:返回false else:返回true #将num写在production print上([I for i in range (2,101) if isprime (i)])等于这个I。
练习2:
(2018-腾讯-在线编程题)
题目:给定一个正整数,写程序计算输入的正整数等于多少对素数,输出结果。输入值小于1000。例如,如果输入是10,程序应该输出结果2。(两对素数之和为10,分别为(5,5),(3,7)【2,3,5,7】输入描述:输入包含一个整数n,(3 n 1000)输出描述:输出对数例1:
输入:10
输出* 2 num=int(input())def是素数(num):对于范围(2,num)中的I:如果num % i==0:返回False else:返回true primeli=[I for I in range(2,num)if is prime(I)]print(prime Li)prime Li count=0 for item in prime Li:if(num-item)in prime Li and item=(num-item):prime Li count=1 print(prime Li count)
5 5=10
3 7=10
3 17=20
17 3=20
练习3:
需求1:假设有20个学生,学生名为威斯特克斯,学生分数在60~100之间,筛选出成绩在90分以上得学生
import random stu info={ } for I in range(20):name= westos str(I)score=random。randint(60,100) stuInfo[name]=score#原始方式:highScore={ }对于名称,在stu信息中评分。items():如果分数=90:高分[姓名]=分数打印(高分)#生成式方式:print({name : score for name,score in stu info。如果得分=90,项目数为()
需求二。键上部把所有的键值变为大写
d=字典(a=1,b=2)工厂函数打印(d)#普通方式new _ d={ } for I in d:new _ d[I . upper()]=d[I]print(new _ d)#生成式方式:print({k.upper():v表示k,v表示d.items()})
可以看出效果相同。
需求3:大小写键值合并,统一以小写输出d=dict(a=2,b=1,c=2,B=9,A=10)
#输出{a: 12, b: 10, c: 2}
d=dict(a=2,b=1,c=2,B=9,A=10)new_d={}#普通方法对于k,v in d . items():low _ k=k . lower()if low _ k not in new _ d:new _ d[low _ k]=v else:new _ d[low _ k]=v print(new _ d)#列表生成式方法print({k.lower(): d.get(k.lower(),0) d.get(k.upper(),0) for k in d})用得到函数获取大小学键的价值值并相加。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。