python基础---函数基础

data1=int(input(“请输入第一个数:”))
data2=int(input(“请输入第二个数:”))
l=[]
for a in range(data1,data2+1):
i=2
while i<a:
if a%i0:
print(a,“不是质数”)
break
i+=1
else:
print(a,“是质数”)
l.append(a)
print(“全部质数是:”,l)
sum=0
for j in range(len(l)):
sum+=l[j]
if j
0:
a=l[j]
b=l[j]
else:
if l[j]>a:
a=l[j]
elif l[j]<b:
b=l[j]

print(“最大值是{},最小值是{},和为{}”.format(a,b,sum))

#函数:
def func():
print(“A”)
print(“B”)
print(“C”)
print(“D”)
floor=int(input(“请输入层数:”))
if floor1:
print(“欢迎来到1楼:”)
func()
if floor
2:
print(“欢迎来到2楼:”)
func()
if floor==3:
print(“欢迎来到3楼:”)
func()

#参数。
def func(a,b):#a,b为传入参数。
c=a+b
print("{}+{}={}".format(a,b,c))
func(2,3)#调用函数。
func(12,456)

#返回值。
def func(a,b):
c=a+b
return c#返回c值。
x=func(9,5)#调用函数,把结果传递给x
if x>10:
print(“打折”)
else:
print(“不打折”)

def func(a,b):
c=a+b
d=a-b
e=a*b
f=a/b
return c,d,e,f
x=func(6,2)#将return的值传给一个变量则返回的是元组。
print(x)
i,k,l,m=func(6,2)#将return的值分别对应传给每个变量,则返回对应结果。
print(i,k,l,m)

def func(a):
a+=2
return a
b=4
func(b)
print(b)#整型不可改变。

#列表可变:
def func(a):
a.append(3)
a=6#这个a与上面的a没有关系,不运行。
b=[]
func(b)
print(b)

#关键字参数。
def func(name,age,sex):
print(“我叫”,name)
print(“年龄”,age)
print(“性别”,sex)
#return 0

func(name=‘Bob’,age=19,sex=‘男’)
#print(x)
#默认参数。
def func(name,age,sex=‘男’):#默认参数必须在普通参数的右边否则报错。
print(“我叫”, name,end=’ ‘)
print(“年龄”, age,end=’ ')
print(“性别”, sex)
func(‘ab’,19)#不给sex赋值的时候使用默认“sex=男”
func(‘cd’,12,‘男’)
func(‘df’,14,‘女’)

#收集参数:
def func(*args):#args是参数集合,可以接受任意数量的参数,用于参数不确定数量的情况。
print(args)
for i in args:
print(i,end=’ ')
print()
func(1,2,3)
func(4,5,6,7,8,9)

#关键字收集参数。
def func(**kwargs):#以键值对的 形式存入参数。
print(kwargs)
for k,v in kwargs.items():
print(k,"–",v,end=’ ')
print()
func(name=‘Bob’,age=19,sex=‘男’)
func(name=‘Lily’,age=19,sex=‘女’,addr=‘NYC’)

#面试题。
def func(a,b,d=[]):
d.append(‘x’)#d运行时代码没错,但是在中间如果修改了他,则下次调用会改变默认值。
print(d)
func(1,2)
func(10,20)

#函数的嵌套。
def fun1():
print(“外层函数”)
def fun2():
print(“内层函数”)
fun2()
fun1()#调用了外层再调用内层,各个函数与调用都在各自的同一层。

#局部变量和全局变量。
a=0
def func():
a=2
print(a)
func()#优先使用局部变量。
print(a)#局部变量的操作不影响全局变量。返回结果还是0

#全局变量如果是可改变类型,则函数可以对其进行修改,调用一次改变一次。
a=[]
def func():
a.append(1)
print(a)
func()
print(a)#此时的a是已经修改的a。
#函数优先读取局部变量,,可以读全局变量但不能对其修改。
a=3
def func(a):#若是func()的形式,则说明函数并没有要求访问全局变量a的值。
a+=5#a+=5是对变量进行操作,函数优先读取的是局部变量且无法对全局变量进行修改,若无a的定义则报错。
func(a)#没有运行?
print(a)

a=3
def func():
print(a)#不报错。
func()

a=3
def func():
global a#将局部变量声明成全局变量。
a=5
print(a)
func()
print(a)

#非全局变量:non-local
def fun1():
a=30
def fun2():
nonlocal a
a=40
print(a)
fun2()
print(a)
fun1()#先调用函数fun1,此时先打印的是print(a),再调用fun2,变量变成非局部变量。

#LEGB法则。L-local 局部 E-enclose 嵌套 G-global 全局 B-BUILT-IN 内置
a=300
b=1
c=2
def fun1():
b=200
c=3
def fun2():
c=100
print©#local
print(b)#enclose
print(a)#global
print(max)#built-in
fun2()
fun1()

#函数递归,阶乘问题。
def func(n):
if n==1:
return 1
else:
return n*func(n-1)
x=func(5)
print(x)

def fib(n):
if n1 or n2:
return 1
else:
return fib(n-1)+fib(n-2)
for i in range(1,12):
print(“第{}个月的兔子个数是{}”.format(i,fib(i)))

#匿名函数。
x=lambda a,b:a10+b7
print(x(3,5))

y=lambda x:x*10+5
print(y(5))

d={‘name’:‘kob’,‘age’:18,‘addr’:‘NYC’}
x=lambda d:d[‘age’]
print(x(d))

a=[1,21,-22]
b=max(a,key=abs)#以绝对值大小为比较条件。
print(b)

a=[1,-2,-3,4,7,9]
a.sort(key=abs)#将列表内元素按照绝对值大小升序排列。
print(a)

a=[
{‘name’:‘kob’,‘age’:18,‘addr’:‘NYC’},
{‘name’:‘kob’,‘age’:28,‘addr’:‘BJ’} ,
{‘name’:‘kob’,‘age’:17,‘addr’:‘LD’}
]
b=max(a,key=lambda x:x[‘age’])#以age的最大值来筛选a中元素。
print(b)

#面试题。
i=10
def a(x):
print(xi)
i=20
def b(x):
print(x
i)
i=30
def c(x):
print(x*i)
a(3)#i取的是最后一次被赋予的值,即i=30。因为i的赋值都是全局变量
b(3)
c(3)

a = [lambda x: x * i for i in range(3)] # 循环出a[0],a[1],a[2]时i循环已经用完,此时i=2就已经固定不在循环,a[0],a[2],a[3]是三个函数xi,再给x赋值时就是x2.
print(a[0]) # 调用lambda的格式。
print(a[1])
print(a[2])

猜你喜欢

转载自blog.csdn.net/zyf0111/article/details/87922487