python基础day08笔记

2018.7.11
 day07回顾
  元组tuple
   元组是不可变的序列容器
  运算:
   + * += *=
   < <= > >= == !=
   in ,not in
   索引和切片






  字典dict
   键.值(key-value)对


   键不能重复,且只能用不可变类型做为字典的键
   字典键[键]=值 #添加和修改键-值对
   del字典[键]
   {1:100,2:200}
  字典的运算
   键索引
   字典[键] = value
   var = 字典[键]
   in,not in


   字典推导式
    {键表达式:值表达式 for in 可迭代对象 if 真值表达式...}


DAY 08笔记


    集合 set
     集合是可变的容器
     集合内的数据对象都是唯一的(不能重复多次)
     集合是无序的存储结构,集合中的数据没有先后关系
     集合内的元素必须是不可变对象
     集合是可迭代对象
     集合相当于只有键没有值的字典(键则是集合的数据)


     创建空集合
      s = set()


     创建非空集合(不能放单一列表,如列表,字典和集合,可以放迭代对象)
      s = {1,2,3}
      s = {3.14,True,(1970,1,1),'hello'}


      集合的构造函数 set
       set() 创建一个空的集合对象(不能用{} 创建空集合)
       set(iterable) 用可迭代对象创建一个新的集合对象
      示例:
       s = {1,3,5,7}
       s = set('abc')
       s = set('abccba')
       s = set({1:'1',2:'2',5:'5'})
       s = set([1,0,3.14,'hello'])
       s = set(('abc','123',True))


      集合的运算:
       交集,并集,补集,子集,超集




      & 生成俩个集合的交集
       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   #生成属于s1 但不属于s2所有元素的集合
       s3 = {1}
       s4 = s2 - s1
       s4 = {4}
      ^生成俩个集合的对称补集 
       s1 = {1,2,3}
       s2 = {2,3,4}
       s3 = s1 ^ s2  #(s1 - s2) |  s2 - s1
       s3 = {1,4}
       >判断一个集合是另一个集合的超集
       <判断一个集合是另一个集合的子集
        s1 = {1,2,3}
        s2 = {2,3}
s1 > s2 #True s1为s2的超集
s1 < s2 False s2为s1的子集
       = != 集合相同/不同
        s1 = {1,2,3}
        s2 = {3,2,1}
s1 == s2  #True


       in ,not in 运算符
        等同于字典in ,not in
作于集合中,判断某个值是否存在于集合中
     
      集合字典的优点:
      in / not in 运算符的判断速度快些


      能用于集合的函数:


      len(x),max(x),min(x),sum(x),any(x),all(x)


集合练习:
 经理有:曹操,刘备,孙权
 技术员有:曹操,孙权,张飞,关羽
 用集合求:
  1)即是经理,也是技术员的有谁
  2)是经理,但不是技术员的人员都有谁?
  3)是技术员,不是经理的都有谁
  4)张飞是经历吗?
  5)身兼一职的人都有谁?
  6)经理和技术员共有几个人


a = set(('曹操','刘备','孙权'))
b = set(('曹操','孙权','张飞','关羽'))
c = a & b
print('即是经理,也是技术员的有谁:',c)
d = a - b
print('是经理,但不是技术员的人员:',d)
e = b - a
print('是技术员,不是经理:',e)
if "张飞" in a:
    print('张飞是经理')
else:
    print('张飞不是经理')
f = a ^ b
print('身兼一职的人:',f)




g = a | b
print('经理和技术员共有:',g)
print('一共',len(g),'个人')




 Python3 集合的方法


方法                   意义
S.add(e) 在集合中添加一个新的元素e;如果元素已经存在,则不添加
S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
S.discard(e) 从集合S中移除一个元素e,在元素e不存在时什么都不做;
S.clear() 清空集合内的所有元素
S.copy() 将集合进行一次浅拷贝
S.pop() 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
S.update(s2) 用 S与s2得到的全集更新变量S
S.difference(s2) 用S - s2 运算,返回存在于在S中,但不在s2中的所有元素的集合
S.difference_update(s2) 等同于 S = S - s2
S.intersection(s2) 等同于 S & s2
S.intersection_update(s2) 等同于S = S & s2
S.isdisjoint(s2) 如果S与s2交集为空返回True,非空则返回False
S.issubset(s2) 如果S与s2交集为非空返回True,空则返回False
S.issuperset(...) 如果S为s2的子集返回True,否则返回False
S.symmetric_difference(s2) 返回对称补集,等同于 S ^ s2
S.symmetric_difference_update(s2) 用 S 与 s2 的对称补集更新 S
S.union(s2) 生成 S 与 s2的全集


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


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


  注:[] 括号部分可省略
示例:
 l = [1,3,5,7,2,4,6,8,1,3,5]
 s = {x for x in l}  #{1, 2, 3, 4, 5, 6, 7, 8}


 集合推导式可以嵌套:
   语法同列表推导式一致


  
 练习:
  任意输入一些数字,存于列表L中,当输入负数时结束输入
  1)打印这些数的和
  2)打印这些数有多少种(去重)
  3)除重复的数字后,打印这些剩余数字的和
  
  提示可以用集合去重


L=[]
while True:
    n = int(input('任意输入一些数字'))
    if n < 0:
        break
    L+=[n]
print(L)
print('和',sum(L))
s = set(L)
print('种',len(s))
print('和',sum(s))






 固定集合 frozenset
 固定集合是不可变的,无序的,含有唯一元素的集合
  作用:
   固定集合可以作为字典的键,还可以作为集合的值


 固定集合的构造函数:
  frozenset() 创建一个空的固定集合
  frozenset(iterable) 用可迭代对象创建固定集合


 示例:
  f = frozenset()   #空固定集合
  f = frozenset([1,3,5,7]) #f = frozenset({1,3,5,7})


  固定集合的运算:
   &交集,|并集,-补集,^对称补集
   < <= > >= == !=
   in ,not in
   (以上运算符和集合set中的用法一致)


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






 总结
 1,数据类型:
  数值类型:
   int,float,complex,bool
  容器:
   不可变的容器
   str,tuple,frozenset,bytes(字节串)


   可变的容器
   list,dict,set,bytearray(字节数组)


 2,值:
   None,False,True


 3,运算符
  算数运算符
   + - * / // % **
   比较运算符
   < <= > >= == !=


   in / not in
   is ,is not
  布尔运算:
   not,and,or
   +(正号)-(负号)
   & ^ |
   [] (索引,切片,键索引)


   表达式:
   1
   1+2
   max(1,2,3) #函数调用是表达式
   x if x > y else y,  条件表达式
   三种推导式:
    列表,字典,集合,推导式(三种)
  语句
   表达式语句:
    所有的表达式都可以单独写在一行,形成一个语句,例:
   print('hello world')


   赋值语句:
    a = 100
    a = b = c = 100
    x,y = 100,200
    a[0] = 100
    dict['name'] = 'tarena'
    del 语句
    if 语句
    while语句
    for 语句
    break语句
    continue语句
    pass语句






   内建函数:
    len(x),max(x),min(x),sum(x),any(x),all(x)
   构造函数(用来创建同类型的数据对象)
    bool(x),int(x),float(x),complex(x),list(x)
    tuple(x),str(x),dict(x),set(x),frozenset(x)
    abs(x),round(x),pow(x,y,z = None),
    bin(x),oct(x),hex(x)
    chr(x),ord(x)
    range(strat,stop,step)
    input(x),print(x)


    
  函数 function
   什么是函数:
    函数是可以重复执行的语句块,可以重复调用
   作用:
    1,用于封装语句块,提高代码的重用性
    2,定义用户级别的函数
   语法:
    def 函数名(形参列表):
        语句块
   说明:
    1.函数的名字就是语句块的名称
    2.函数名的命名规则写变量名相同(函数名必须是标识符)
    3.函数名是一个变量(不要轻易对其赋值)
    4.函数有自己的名字空间,在函数外部不可以访问函数内部的变量,在函数
    可以访问函数外部的变量,但不能修改此变量
    5.函数如果不需要传入参数,形参列表可以为空
    6.语句部分不能为空,如果为空需要填充pass


    示例见:
     函数名(实际调用传递参数)
      注:实际调用传递参数,以后简称实参


   说明:
    1.函数调用是一个表达式
    2.如果函数内部没有return语句,函数调用完毕后返回None对象
    3.如果函数需要返回其它的对象要用到 return 语句


 写一个函数,打印出给定俩个数的最大值
def mm(a,b):
    print('a=',a)
    print('b=',b)
    if a > b:
        print(a,'最大')
    else:
        print(b,'最大')


mm(100,200)
mm('ABC','123')


练习:
 1,写一个函数myadd,此函数中的参数列表里有两个参数x,y
  此函数的功能是打印x + y的和
def myadd(x,y):
    print('x=',x)
    print('y=',y)
    print('和=',x+y)
myadd(100,200)
myadd('abc','123')
 2,写一个函数mysum,传入一个参数x代表终止整数,打印出
 1+2+3+4+5++++x的和?
方法一:
def mysum(x):
    a = 0
    i = 1
    while i <= x:
        # print(i,end='')
        a += i
        i += 1
    print('和',a)
mysum(100)
mysum(4)
方法二:
def mysum(x):
    s = 0
    for n in range(1,x+1):
        #print(n,end = '+')
        s += n
    print(s)
mysum(100)
mysum(4)
方法三:
def mysum(x):
    c = []
    for n in range(1,x+1):
        #print(n,end = '+')
        c+=[n]
    print(sum(c))
mysum(100)
mysum(4)


return 语句
 语法:
  return[表达式]
  注:[]代表可省略
 作用:
  用于函数中,结束当前函数的执行,返回到调用该函数的地方,同时
  返回一个对象的引用关系


 return 语句说明
  1.return 语句后跟的表达式可以省略,省略后相当于return None
  2.如果函数内没有return语句,则函数执行完最后一条语句后返回
  None(相当于在最后加了一条return None语句)
 示例: 
def my():
    print('aaaaaa')
    print('bbbbbb')
    return[1,2,3,4]
    print('cccccc')
v = my()   #aaaaaa
           #bbbbbb
print(v)   #[1, 2, 3, 4]


 练习:
  1.写一个函数 mymax,给函数传递两个参数,返回两个实参中最大的一个
  det mymax(a,b)
方法一:


def mymax(a,b):
    if a > b:
        return a
    else:
        return b


v = mymax(100,200)
print('v = ',v)   #v = 200
print(mymax('ABC','abc'))
方法二:


def mymax(a,b):
    return max(a,b)


v = mymax(100,200)
print('v = ',v)   #v = 200
print(mymax('ABC','abc'))




 2.写一个函数input_rumber 
 def input_rumber():
    ...
  此函数用来获取用户循坏输入的整数,当用户输入负数时结束输入,
  将用户输入的数字以列表的形式返回,再用内建函数max,min,sum
  取出输入最大值,最小值,及和


def input_number():
    lst = []
    while True:
        n = int(input('输入数字: '))
        if n < 0:
            break
        lst +=[n] 
    return lst
L = input_number()
print(L)
print('最大数',max(L))
print('最小数',min(L))
print('和',sum(L))
 
练习:
 1,写一个函数print_odd,
 打印从begin开始,到end结束内的全部奇数
    
    def print_odd(begin,end):
    ...
    peint_old(1,10) #打印13579d
    peint_old(1,10) #打印11 13 15 17 19
    
 2,定义两个函数:
  sum3(a,b,c) 用于返回三个数的和
  pow3(x) 用于返回x的三次方
  用以上函数计算:
   1.计算1的立方+2的立方+3的立方
    既:1**3+2**3+3**3的和
   2.计算1+2+3的和的立方,
   即:(1+2+3)**3


 3,改写之前的学生信息管理程序改为俩个函数:
   1.写一个函数input_student()
  用于返回学生信息的字典的列表(以前格式一样)
   2.写一个函数output_student(lst)
    此函数传入一个列表lst,即字典的列表
    此函数把lst的内容以表格形式打印出来
   def input_student():
     ...
   def output_student():
     ...


   L = input_student()  #获取学生信息的列表
   output_student(L)    #把L以列表的形式打印

猜你喜欢

转载自blog.csdn.net/qq_42584444/article/details/81057785
今日推荐