day13-关于一个题目的理解和困惑
需求分析:查看当前目录所有东西,询问是否添加,可以返回上级和直接退出,也可以在当前目录进行添加。
代码:
1 #查看当前目录所有东西,询问是否添加,可以返回上级和直接退出,也可以在当前目录进行添加。 2 db={}#用于存放用户查看和创建的东西 3 path=[]#记录目前用户所在的目录 4 while True:#进入循环,用户想退出时关闭循环 5 tem=db #同tem来代指db,临时查看db中的东西 6 for i in path: 7 tem=tem[i]#进行计数,当用户选择查看目录时, 8 print(list(tem.keys())) 9 chioce=input('请输出你想查看的目录:1-添加目录,2-查看目录,Q-推出,B=返回上一级 \n')10 if chioce =='1':11 k=input('请输出你想添加的目录\n')12 tem[k]={}13 elif chioce == '2':14 print(list(tem.keys()))15 v=input('请输出你想查看的目录\n')16 path.append(v)#列表中对用户输入的想要查看的目录进行计数,然后遍历一遍,最后一遍一遍的tem到用户的那个目录17 18 elif chioce.upper() == 'Q':19 break20 elif chioce.upper() =='B':21 path.pop()22 else:23 print('请输出正确的选项')
day14-集合与函数
1.集合
集合:集合是由不同的元素组成,元素的排列是无序的可hash元素,只能是不可变元素:字符串,元组,数字
1.1设置集合
s=set('hello')--{'h','e','o','l'}
会对值进行一次for循环,然后逐个加入到集合当中,但是重复的元素不行,而且是没有顺序的。
1.2集合的内置方法
1.2.1 pop--对集合中的元素进行随机删除
remove--对集合中的元素指定删除,但是如果没有则会报错
discard--也是对集合中的元素进行指定删除,如果没有指定元素的话不报错
1.3集合的各种用法
1.3.1 求交集&
s1 intersection (s2)
s1 & s2
求两个集合中都含有的元素
1.3.2求并集 |
s1 union (s2)
s1 | s2
求两个集合一共有什么样的 元素
1.3.3 求差集 -
s1 difference (s2)
s1 - s2
s1含有而s2没有的元素
1.3.4 求交叉补集 ^
s1 symmetric_difference (s2)
s1 ^ s2
求两个几个除去共有部分的元素
1.3.5 difference_update
求完差集之后,再讲差集的元素更新到S1中
1.3.6 isdisjoint
查看两个集合是否有交集,如果没有交集,返回True
1.3.7 issubset
查看某一集合是否包含于另一个集合
issuperset
查看某一几个是不是另外一个集合的父集
1.3.8 update
求两个集合的并集并且赋值给s1
1.4 不可变集合
frozenset()
使用此方法建立的集合不能做任何改变
2.字符串格式化
2.1 %方法
2.1.1 %s
s= 'I am %s' %'yehaibin'print(s)--I am yehaibin
2.1.2 %.2f
浮点数进行替换,.2是保留小数点后两位
s= 'I am %.2f' %17.888888888print(s)--I am 17.89
会自动四舍五入
2.1.3 打印百分比%.2f %%
s= 'I am %.2f %%' %17.888888888print(s)--I am 17.89 %
2.1.4字典形式代替
# 字典形式替代s1={ 'name':'yehaibin','age':18}print('i am %(name)s,age %(age)d'%s1)--i am yehaibin,age 18
其中,如果字典中的键是str,则需要时%(str)s,如果是int,则需要时%(int)d
2.2 format
2.2.1 字典形式
t= 'i am {name}'s=t.format(name='yehaibin')print(s)--i am yehaibin
3. 函数
如果过程没有定义返回值,则默认返回NONE
形参和实参
3.1 形参
形参不是真实的参数,是在函数内,供参考代指的一个元素,只在函数内生效
3.2实参
实参是指实际进行运算时放入的元素,实际运算时的元素。
!!!!!函数遇到reture就结束。
3.3 位置参数
通过位置一一进行传值,不能多不能少。
def test(x,y): print(x) print(y)test(1,3)====13
3.3 关键字参数
def test(x,y): print(x) print(y)test(x=111,y=78)--11178
3.4 混搭传值
混搭传值,只能是位置参数在前,关键字参数在后,而且关键字参数和位置参数不能重复。
3.5 非固定长度参数 *args---**kwargs
*args是传入列表
def test(x,*args): print(x) print(args)test(1,'dsa','ads','Alex')----1('dsa', 'ads', 'Alex')-----输出的是x和一个元组后面所有的东西都是在一个元组内。如果整个传入一个列表,不加*的话,也是直接放到一个元组内,如果加了*,则是通过for循环一个一个放入元组内
def test(x,*args): print(x) print(args)test(1,['dsa','ads','alex'])--1(['dsa', 'ads', 'alex'],)
加上*之后
def test(x,*args): print(x) print(*args)test(1,['dsa','ads','alex'])--1['dsa', 'ads', 'alex']
3.6 **kwargs传入字典
def test(x,**kwargs): print(x) print(kwargs)test(1,y=1,z=4)--1{ 'y': 1, 'z': 4}
3.7 想要传入任何值
def test(x,*args,**kwargs): print(x) print(args) print(kwargs)
test(1,'x','y','z',g='c',h='sdfsdf')--1('x', 'y', 'z'){ 'g': 'c', 'h': 'sdfsdf'}