join_mark

 

第三次练习



#1.列举布尔值为False的值
# print(bool(0))
# print(bool(False))
# print(bool(''))
# print(bool([]))
# print(bool({}))
# print(bool(None))

# 2.根据范围获取其中3和7整除的所有数的和,并返回调用者
# def fun(start,end,a=0,b=0):
# a=0
# b=0
# if start ==end:
# return a,b
# if start%3==0 and start%7==0:
# a +=1
# b +=start
# ret =fun(start+1,end,a,b)
# return ret
# su=fun(1,100)

# 3.函数的默认返回值是什么? None
# 4.简述break /continue /return 的区别:
# Break:结束当前循环
# Continue:结束本次循环进入下一次循环
# Return:返回函数返回结果,默认值为None

#5.函数传递参数时,是引用一还是复制值并证明(理解就是同一个值是否是同一个内存地址)
#是引用函数值 ,不是复制
# name = 'abc'
# def show():
# print(id(name))
# print(id(name))
# show()

#6.简述三元运算书写格式以及应用场景
# ret =1 if 1>0 else 5
# print(ret)

#7.简述lambda表达式书写格式以及应用场景
#函数名 = lamdba 形参:功能 不写函数名也可以
#应用场景:将简单的函数写成匿名函数,减少代码

#8.使用set集合获取两个列表l1=[11,22,33,] l2=[22,33,44,55]中相同的元素集合

# l1=[11,22,33,]
# l2=[22,33,44,55]
# print(set(l1) & set(l2))

#9.定义函数统计一个字符串的大写字母,小写字母,数字的个数,都以字典的结果返回给调用者

# def test(str):
# # str1='fs5866SAFDSAV'
# shuzi = []
# xiaoxie=[]
# daxie = []
# for i in str:
# # print(i)
# if i.isdigit() ==True:
# shuzi.append(i)
#
# elif i.islower() ==True:
# xiaoxie.append(i)
# else:
# daxie.append(i)
# print(shuzi)
# print(daxie)
# print(xiaoxie)
#
# test('855fdsafGFDSGreewr')

#10.简述函数的位置参数,关键字参数,默认参数,可变长参数的特点及注意事项
#位置参数:按形参的位置传入的参数叫位置参数
#关键字参数:传入实参时指定形参的值
#默认参数:形参指定的默认值
#可变长参数: *args **kwargs 一个只能接收没有位置参数的实参或,是列表,元组,字典等

#11.检查代码,如有错误请改正(禁止运行代码)
# def func(x,y,z=5):
# print(x,y,z)
# func(1,3,3)
#结果为133
# def func2(x,y,*z):
# print(x,y,z)
# func2(1,2,3,4,5,6)
#结果:1,2(3,4,5,6)

# def func2(x,*z,**y):
# print(x,y,z)
# func2(1,2,3)
#结果1{}(2,3)
# def func3(x,*y,**z):
# print(x,y,z)
# func3(1,name=2,age=3)
#结果:1 () {'name': 2, 'age': 3}
# def func4(x,*y,**z):
# print(x,y,z)
# func4(1,2,3,4,name=2,age=3)
#结果1 (2, 3, 4) {'age': 3, 'name': 2}
# def func5(x=2,*y,**z):
# print(x,y,z)
# func5(name=2,age=3)
#结果:2 () {'age': 3, 'name': 2}

#13.书写输出结果
# def func(*y,**z):
# print(y,z)
# func(1,2,3,4,5)
#结果:(1, 2, 3, 4, 5) {}

# def func(*y,**z):
# print(y,z)
# func([1,2,3,4,5])
#结果:([1, 2, 3, 4, 5],) {}

# def func(*y,**z):
# print(y,z)
# func(*[1,2,3,4,5])
#结果:(1, 2, 3, 4, 5) {}

# def func(*y,**z):
# print(y,z)
# func(*[1,2,3,4,5],{"name":"jack","age":19})
#结果:(1, 2, 3, 4, 5, {'name': 'jack', 'age': 19}) {}

#14.书写执行结果
# def func1(x=1,*y,**z):
# print(x,y,z)
# return y
# print(x)
# def func2(arg):
# ret=func1(name=arg)
# print(ret)
# result = func2("Fuck")
# print(result) #这里是None是因为这个函数没有返回值
# #结果:1 () {'name': 'Fuck'} () None

# #15.书写执行结果:(后面的结果为None:是因为在所有函数中没有return 返回值的,如"ret=fun(li)"。返回的都是None)
# def fun11(arg):
# arg.append(55)
# li=[11,22,33,44]
# fun11(li)
# print(li)
# li=fun11(li)
# print(li)
#结果:[11, 22, 33, 44, 55] None

#16.书写执行结果;
# def f1(arg):
# print(arg+100)
# def f2(arg):
# ret = f1(arg +1)
# print(arg)
# print(ret)
# ret =f2(7)
# print(ret)
#结果:108 7 None None

#17.简述python3中的range函数和python2.X 中的range函数有什么区别?
#python 3.x 不会生成值, 只有用的时候才会生成,封装成一个类迭代器对象(省内存)
#python2.x 会直接生成一个列表,把所有数据都放到内存中去()

#18.书写执行结果;
# a= 'guan %'
# print(a)
# b='fds %d %%' %(12)
# print(b)
# #结果:guan % fds 12 %

#19简述对象和类的关系

#20.书写执行结果;
# def func20(a1):
# return a1 +100
# func20 =lambda a1:a1 +200 #两个同名的函数,以最后的函数运行结果为准,把上面的函数覆盖
# ret =func20(10)
# print(ret)


#21.内置函数all和any的区别
#all是如果是空,返回True 如果非空,全真为真,否则为假
#any 是一个为真就为真

#22.简述文件打开模式"r"和"rb"的区别
# r是只读模式打开 ,默认以uft-8格式
# rb是以二进制的格式 打开(保存为bytes就是为了省空间)

#23.将字符串“中文”转换成UTF-8编码的字节类型
# s='中文'
# a=bytes(s,'utf-8') #一种方法
# s.encode('utf-8') #另一种方法

#24.利用内置函数十进制12,分别转换成二进制,八进制,十六进制表示

#25.简述内置函数globals() locals()作用
#gbobals()获取所有的全局变量
#locals() 获取所有局部变量

#26.利用内置函数zip()利用如下列表内容,实现s='jack_is_good'
# li = ['jack',22,33,44,55] l2 = ['is',22,33,44,55] l3 = ['good',22,33,44,55]
# li = ['jack', 22, 33, 44, 55]
# l2 = ['is', 22, 33, 44, 55]
# l3 = ['good', 22, 33, 44, 55]
# print('_'.join(list(zip(li,l2,l3))[0]))

#27.判断输出结果是否相同?并可得到什么结论?
# def f1(arg):
# print(id(arg))
# n= 11111
# print(id(n))
# f1(n)
#结果:输出的两个值相同,执行函数是调用变量值不是复制

#28.书写执行结果;
# NAMELIST=['jack','milk']
# def func():
# NAMELIST =123
# func()
# print(NAMELIST)
#结果:['jack', 'milk']
# NAMELIST=['jack','milk']
# def func():
# global NAMELIST
# NAMELIST =123
# func()
# print(NAMELIST)
#结果:123

# NAMELIST=['jack','milk']
# def func():
# NAMELIST.append('seven')
# func()
# print(NAMELIST)
#结果:['jack', 'milk', 'seven']

# NAMELIST=['jack','milk']
# def func():
# NAMELIST =123
# global NAMELIST
# func()
# print(NAMELIST)
#结果 123 但会提示警告

#29.书写执行结果;
# name = 'root'
# def func():
# name ='seven'
# def outer():
# name='eric'
# def inner():
# global name
# name= '有点晕'
# print(name)
# print(name)
# ret=func()
# print(ret)
# print(name)
#结果seven None root
#
# name = '苍老师'
# def outer():
# name = '波多'
# def inner():
# print(name)
# return inner()
# ret = outer()
# print(ret)
#结果:波多 None

# name = '苍老师'
# def outer():
# name ='波多'
# def inner():
# print(name)
# return inner
# ret =outer()
# ret()
# print(ret)
# result=ret()
# print(result)
#结果为:波多 内存地址 波多 None

# name = '苍老师'
# def outer():
# name ='波多'
# def inner():
# print(name)
# return inner
# ret = outer()
# print(ret)
# result = ret()
# print(result)
#结果为: 内存地址 波多 None

#33.利用递归实现1*2*3*4*5*6*7=5040
#第一种方式
# def func(x,y=1):
# if x == 1:
# return y
# y = y * x
# x-=1
# ret = func(x,y)
# return ret
# ret = func(7)
# print(ret)
#第二种
# n*(n-1)
# def func30(n):
# if n==1:
# return 1
# return n*func30(n-1)
# print(func30(7))

#第三种
# from functools import reduce
# print(reduce(lambda x,y:x*y,[x for x in range(1,8)]))

#35.a文件操作时with的作用?
#with作用:打开文件执行完毕后自动关闭
#b.写程序利用with 实现同时打开两个文件(一读,一写,并将读取的内容写入模式文件中)
# with open("a文件","r") as x ,open("b文件","w" ) as y:
# y.write(x.read())

#37.猴子第一天接下若干个桃子,当即吃了一半,还不过瘾就多吃了一个,第二天早上又将剩下的桃子吃了一半
#还是不过瘾又多吃了一个,以后每天都吃前一天剩下的一半再加一个,到第10天刚好剩下一个。
#问猴子第一天摘了多少个桃子?

#方法1:
# s= 1
# func =lambda x:(x+1)*2
# for i in range(9):
# s=func(s)
# print(s)
#方法2:
# def func(x,day):
# day -=1
# if day ==0:
# return x
# x = (1+x)*2
# ret = func(x,day)
# return ret
# ret =func(1,10)
# print(ret)

posted on 2018-03-07 21:59  join_mark  阅读(120)  评论(0)    收藏  举报

导航