python开发 day08

Day08

1集合  set

集合是可变的容器

集合内的数据对象都是唯一的(不能重复多次的)

集合是无序的存储结构,集合中的数据没有先后顺序关系

集合内的元素必须是比可变的对象

集合是可迭代对象

集合是相当于只有键,没有值的字典(键则是集合的数据)

创建空的集合:

Set()

创建非空集合:

S = {1, 2, 3}

集合的构造函数(创建)set

Set()创建一个空的集合对象(不能用{  }来创建空集合)

Set itetable|)用可迭代对象创建一个新的集合

示例;

S = set( )    #空集合

S = {1,2,3,4}

S= set(“ABC”) # s = {A,’B’,  ‘C’}

  S= set(“ABCCCBA”) # s = {’B’, A’  ‘C’}

S= set ({1”一”2:“二”,3:“四” })   #s= {1,2,3}

    

集合的运算:

交集,并集,补集,子集,超集,对称补集

&    |      -     <     >        ^

& 生成两个集合的交集

S1 = {1,2,3}

S2 = {2,3,4}

S3 = s1 & s2   # s3 = {2,3}

| 生成两个集合的并集

S1 = {1,2,3}

S2 = {2,3,4}

S3 = s1 | s2   # s3 = {1, 2, 3, 4}

-生成两个集合的补集

S1 = {1,2,3}

S2 = {2,3,4}

S3 = s1 - s2   #s3 = {1} 生成属性s1但不属于s3 的所有元素的集合

^对称补集

S1 = {1,2,3}

S2 = {2,3,4}

S3 = s1 ^ s2  # s3 = {1,4}  

>判断一个集合是另一个集合的超集

< 判断一个集合是另一个集合的子集

S1 = {4,5,6}

S2 = {4,5}

S1 > s2   # Ture  s1s2的超集

S2< s1   # Ture   s2s1的子集

== = 判断集合是否相等

{1,  2,  3}  =={2,  3,  1}  #Ture

{1,2}     != {3,  4}   # Ture

<=  >= 判断包含,被包含关系

in / not  in 运算符

判断一个元素是否存在于集合中(同其它容器类型的in相同)

not in  in 相反

集合和字典的优点;’

 In / not in 运算符的查找速度快

集合的内建函数操作:

 Lenxmaxxminxsumxanyxallx

练习:

经理有:曹操,刘备,孙权

技术员:曹操,孙权,张飞,关羽

用集合求:

1, 即是经理也是技术员的人有谁?

2, 是经理,但不是技术员的人有谁?

3, 是技术员,不是经理的都有谁?

4, 张飞是经理吗?

5, 身兼一职的人都是谁?

6, 经理和技术员共有几个人?

j = {'曹操','刘备','孙权'}

jsy = {'曹操','孙权','张飞','关羽'}

print('即使经理也是技术员的人是:',j & jsy)

print('是经理,但不是技术员的人是:',j - jsy)

print('是技术员,不是经理的人是:',jsy - j)

zf = '张飞'

if '张飞'in jsy:

    print(zf,'不是经理')

else:

    print(zf,'是经理')

print('身兼一职的人是:',j ^ jsy)

print('经理和技术员共有%d个人'%len (j|jsy))

集合是可迭代对象:

for语句可以得到集合中国的全部数据元素

  S = {1,“二”,3.14,“Four}

  For x in s

     Printx

集合推导式:

集合推导式是用可迭代对象生成集合的表达式

语法:

{表达式 for 变量 in 可迭代对象 [ if  真值表达式]}

注:[ ] 括起来的部分代表可以省略

练习:

写一个程序,任意输入一篇英文文章(可能有多行)当输入空行时结束输入

1. 判断出现英文单词的种类数

比如:the world

     The dream (种类数是3)

   #答案

# L = []

# while True:

#     s = input("请输入: ")

#     if not s:

#         break

#     L.append(s)

# print("您输入了%d行文字" % len(L))

# L2 = []

# for s in L:

#     for ch in "0123456789’():“”–.,":

#         s = s.replace(ch, ' ')

#     print("====> : ", s)

#     L2.append(s)

# print(L2)

# words_set = set()  # 创建一个空集合,把所有词放进去

# for s in L2:

#     words = s.split()  # 把字符串分拆成字符串列表

#     for w in words:

#         words_set.add(w)  # 把所有单位加到集合内

# print("单词个数:", len(words_set))

# print(words_set)

固定集合  frozenset

固定集合是不可变的,无序的,含有唯一元素的集合

作用:

固定集合可以作为字典的键,也可以做为集合的值

创建空的固定集合:

Fz = frozenset()

创建非空的固定集合:

Frozensetiterable)用可迭代对象创建集合

:

  Fz = frozenset([2,  3,  5,  7])

固定集合的运算:

set 运算完全一致

& 交集,| 并集,-补集,^ 对称补集,

Ø  >=   <   <=  ==   !=

In , not in

固定集合的方法:

相当于集合的全部方法去掉修改集合的方法

8天的总结:

数据类型:

不可变的类型:

  Boolintfloatcomplexstrtuplefrozensetbytes(后面会讲)

可变的数据类型:

  Listdictsetbytearray(后面会讲)

值:

NomeFalseTrue

运算符:

+ - * /  //  %  **  

>1  >=   <   <=   ==  !=

  Not   and   or

In ,not   in

&   |  ^

+ ( 正号)  -(负号)

表达式:

100

100+200

Len[1,2,3]+ max[1,2.3]#函数 调用是表达式

Print(“hello”)

条件表达式:x   if  x   >  y  lese  y

全部的推导式:[ x for  x  in  range (5) ]

(列表,字典,集合推到式三种)

语句:statement

表达式语句:

  Print(‘hello  world’)

hello

 赋值语句:

A = 100

A = b = c = 200

X,  y,  z,  =  100,  200,  300

If 语句

While 语句

For   语句

Continue  语句

Pass   语句

Del   语句

内建函数:

Lenx

Maxx

Min (x)

Sum(x)

Sny(x)

Any(x)

All(x)

构造函数:

bool(x)

  int(x, base=10)

  float(x)

  complex(real=0, image=0)

  str(x)

  list(x)

  tuple(x)

  dict(x)

  set(x)

  frozenset(x)

数字处理函数:

Absx

Roundx

Powxyz = 0

字符串相关函数:

Bin (x)

Oct (x)

Hex (x)

chr (x)

ord (x)

迭代器相关:

 Rangestartstopstep

Reversedx

Sortedx

输入输出相关:

Input (x)

Print (…)

详见:

>>> help(_builtins_)

3、函数  function

什么是函数:

函数是可以重复执行的语句块,可以重复调用

作用:

用于封装语句,提高代码的重要性

用于定义(创建)用户级别的函数

语法:

   Def 函数名(行参数列表):

语句块

说明:

1.函数的名就是语句快的名称

2.函数名非命名规则与变量名相同(函数名必须是标识符)

3.函名是一个变量

4.函数有自己怕名字空间,在函数外部不可以访问函数内部的变量,在函数内部可以访问函数外部的变量,要让函数处理外部数据需要用参数给函数传入一些数据

5.参数列表可以为空

6.语句部分不能为空,如果为空需要用pass语句填充

示例:

Def say_ hello():

Print(‘hello,world‘)

Print(‘hello,tarena ‘)

Print(‘hello,python‘)

#调用函数:

Say_hello()打印结果如下:

#Print(‘hello,world‘)

#Print(‘hello,tarena ‘)

#Print(‘hello,python‘)

函数调用:

函数名(实际调用传递参数)

说明:

函数调用是一个表达式

如果没有return语句,函数执行完毕后返回None对象

如果函数需要返回其它的对象需要用return语句

示例:

#此示例意函数的传参:

def mymax(a,b):

    print('用户传给我的第一个参数a',a)

    print("b =",b)

#调用mymax

mymax(100,200)

输出

#用户传给我的第一个参数a100

#b = 200

练习:

def语句定义一个函数,此函数接收两个实参

1) 在函数内打印出两个实参的和

2) 在函数内打印两个实参的最小值

# def myfun(a,b):

#     print('这两个数的和为:',a+b)

#     if a < b:

#         print('最小值为',a)

#     else:

#         print('最小值为',b)

# myfun(100,200)

# myfun(50,300)

练习:

1. 已知全班学生的名单,存于集合中names

写一个点名签到的程序。

随机输出学生的姓名,让用户输入:y’代表已到,输入‘n’或其他代表未到。

当点名结束后,打印未到者名单

2. 写一个函数print_even ,传入一个参数n代表终止数,此函数调用将打印2 4 6 8 ……n之间所有的偶数

函数定义如下:

  def print _ evenn

….此处自己完成

# 测试调用:

# print8

2 4 6 8

# print15

2 4 6 8 10 12 14

答案

#1

names = {'小张', '小李', '小赵', '老冯'}

S = set() # 此集合用来保存未到者的名单

for n in names:

    result = input(n + "来了没有: ")

    if result == 'y':

        pass

    else:

        S.add(n)

print('未到者名单:', S)

#2

# def print_even(n):

#     for x in range(2,n+1):

#         if x % 2 == 0:

#             print(x,end = ' ')

#     print()

# print_even(16)

猜你喜欢

转载自blog.csdn.net/weixin_42312995/article/details/80685659
今日推荐