python的函数定义和调用方法有哪些特点,python函数里面可以定义函数吗

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: