2018-6-4-Python全栈开发day13-14-集合与函数

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         break
20     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.888888888
print(s)
--I am 17.89

    会自动四舍五入

  2.1.3 打印百分比%.2f %%

      

s= 'I am %.2f %%' %17.888888888
print(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)
====
1
3

  3.3 关键字参数

    

def test(x,y):
    print(x)
    print(y)
test(x=111,y=78)
--
111
78

  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'}

    

猜你喜欢

转载自www.cnblogs.com/hai125698/p/9136056.html