python笔记整理 day2

列表可以转成字典:但是前提:列表中元素都要成对出现
dict1=dict([('name','lucy'),('age',10)])
print(dict1)
操作:
1、添加元素:
字典名[key]=value
注意:key是唯一的,所以在添加的时候如果出现同名的key,后面key对应的value就替换原来的
2、修改value值
字典名[key]=value
关键看键值:如果字典中不存在键 就是添加
          如果字典中存在键  就是修改
3、字典删除
pop(key):根据key值实现删除,删除的是键值对,返回的值是key对应的value值
clear():清空字典
popitem():返回值(key,value)从后向前删除  返回的是元组
4、遍历和查询
list.index() list.count() in
获取:
dict.get(key):根据key获取value值
dict[key]:根据key获取value值
区别:get(key)里面的key如果不存在,则返回默认值None,同时get()可以设置默认值get(key,default)
     dic[key]会报错
如果直接用for  in直接遍历字典,只能取出字典key值
获取字典中所有的values值:字典.values()就是将所有值存放到了一个列表中
for v in book.values():
    print(v)
获取字典中所有key:字典.keys()
for k in book.keys():
    print(k)
获取字典中所有key和value的值  字典.items()
for k,v in book.items:
    print(k,v)
update  实现两个字典的合并
book={'书名':'三体','价格':90,'作者':'毛不易','出版社':'清华大学出版社'}
book.update({'年龄':'23'})
print(book)


books=[]
while True:
    if len(books)==3:
        break
    name=input('输入想要添加的书名:')
    for book in books:
        if name==book.get('name'):
            print('书名重复')
            break
    else:
        author = input('输入作者名字:')
        price = input('输入书的价格:')
        books.append({'书名': name, '价格': price, '作者': author})


集合:set
特点:没有重复,没有顺序(没有下标)
符号:{} {元素,元素,元素}只有元素就是集合
        {key:value,key:value}键值对存在就是字典
空集合的声明:set1=set()
添加元素:add()只能添加一个元素  update()两个集合合并
移除元素:remove(元素)  discard(元素) del set   set.clear()  set.pop() 随机删除集合中的任意元素

s='jifenskdnfleo21094389'
import random
code_list=set()
while True:
    code=''
    for i in range(4):
        n=random.choice(s)
        code=code+n
    code_list.add(code)
    if len(code_list)==5:
        break
print(code_list)


集合:交集intersection & 并集union  | 差集difference  -


dict——》list 只能转变键值  字典的键值不可以重复
list——》dict 只有特殊情况下可以转变
list=[('a',b),('m',n)]

+支持字符串  列表  元组
*用在列表上相当于将列表复制了几份  支持字符串  列表  元组
列表推导式:最终得到的是一个列表
print('tt') if 5>3 else print('nn')
格式1:[i for i in 可迭代的]先执行循环
格式2:[i for i in 可迭代的 if条件]先执行循环在执行判断
格式3:既有if又有else [结果1 if条件1 else结果2 for i in 可迭代]

list=['ji','90','ko','89','kitte']
list1=[word.title() if word.startswith('k') else word.upper() for word in list ]
list=[for i in range(3) for j in range(2)]
练习:请写出一段python代码实现一个list里面的元素,比如[1,2,...100]变成[[1,2,3],[4,5,6]...]
找出里面名字里含有两个e的放到新列表中name=[['Tom','Billy','Jefferson','Andrew','Wesley','Joe','Steven'],['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']]
name=[['Tom',''
for i in range(1,99,3):
    if i % 3 != 0:
        list2.append([i, i + 1, i + 2])
print(list2)
name0=[]
name=[['Tom','Billy','Jefferson','Andrew','Wesley','Joe','Steven'],['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']]

for na in name:
    for i in na:
       if i.count('e')==2:
        name0.append(i)
print(name0)

函数:复用
函数的格式:def 函数名([参数,....]):
            代码(封装重复内容)
函数名:get_name()  search()
参数:1、无参数 def 函数名():
     2、有参数 def 函数名(参数1,参数2):
带有多个参数的函数:
默认值参数:在定义函数的时候,有一个或者多个参数已经赋值
def 函数名(参数1,参数2,参数3,参数4=值)
在调用函数的时候,默认值参数可以赋值,也可以不赋值
注意:在定义函数的时候,普通参数要位于默认值参数的前面
     默认参数的顺序是固定的,调用时可以使用关键字进行赋值
def get_sum(a,b):
    # isinstane(变量,类型)用来判断这个变量是否是这个类型  返回值为bool
    if isinstance(a,int) and isinstance(b,int):
        print(a+b)
    else:
        print('类型不一致')
get_sum(1,'io')
可变参数:*args **kwargs...
拆包和装包
函数装包
def 函数(*args):----->此时会出现装包操作
    pass
函数(1,2,3)
拆包:
list,tuple,set
调用的时候:函数(*list)  函数(*tuple)   函数(*set)
def get_sum(*a):
    # 返回值是一个元组
    s=0
    for i in a:
        s=s+i
    print(s)
a={1,2,23,67}
get_sum(*a)
关键字参数:
在函数调用的时候必须传递关键字参数,才可以将其转换成key:value的键值对  存放形式是字典
book={'name':'红楼梦','author':'曹雪芹','price':3}
def show_book(**book):装包
    # book={'name':'红楼梦','author':'曹雪芹','price':3}
    for k,v in book.items():
        print(k,v)
show_book(**book)  拆包
# name 红楼梦
# author 曹雪芹
# price 3
可变参数:既使用可变参数又使用关键字参数

参数:外界向里面传值
返回值:里面的内容向外界传送
def 函数名(参数):
  ....
  ....
  return 结果
当函数调用时,通过return向外返回值
注意:只要函数有返回值,就需要在外面进行接收
return后面的返回值可以是一个或多个  如果是多个,系统自动将多个值封装到一个元组中,将元组整体返回
def get_max_min(list):
    return max(list),min(list)
# (max,min)
list=[2,45,3,25,66,742,1]
result=get_max_min(list)
print(result)
#(742, 1)
练习:验证是否登录:islogin():
自定义一个判断用户是否登录功能islogin,参数username,password
函数体:判断用户输入的用户名和密码是否正确,如果正确则返回True,否则返回false
借书:borrow_book
参数是:书名
函数体:
判断是否登录,如果登录则可以借书
如果没有登录则提示:还没有登录不能借书
def add_good(goodname,islogin):
    if islogin:
        if goodname:
           print('登录成功,{}添加成功'.format(goodname))
        else:
            print('没有输入商品')
    else:
        print('没有登录')
        choice=input('是否重新登录,请输入yes或者no')
        if choice=='yes':
            flag=True
            while flag:
                username=input('输入用户名:')
                password=input('输入密码:')
                login(username,password)
                result=login(username,password)
                if result==False:
                    choice1=input('是否重新登录,请输入yes或者no')
                    if choice1=='yes':
                        pass
                    else:
                       flag=False
                       print('退出系统')
                else:
                    break

        else:
            print('退出系统')
def login(username,password):
    if username=='admin' and password=='1234':
        islogin=True
        print('登录成功')
        return islogin

    else:
        islogin=False
        print('登录失败')
        return islogin

islogin=login('admin','134')
add_good('香肠',islogin)
全局变量和局部变量:(针对函数)
声明在函数外面的称为全局变量
声明在函数内部的称为局部变量
函数内部如果需要对全局变量进行修改 需要使用global关键字
def test3():
    # 改变全局a的值
    global a
    a = a - 1
可变与不可变变量:
不可变:当改变变量的值时,地址发生了改变
       类型:字符串 int  float 元组 bool
可变类型:里面的内同发生了改变,但是地址没有发生改变
       类型:list dict set
可变类型:允许改变类型       可变类型不需要添加global
不可变类型:不允许改变类型   只有不可变类型需要添加global


a=100
print(id(a))
# 2822810588624
a=90
print(id(a))
# 2822810588304
函数的注释:
def 函数名(参数1....):
   基本注释  ’注释内容‘
   高级注释 ''' '''
   函数说明
    :param username:用户名
    :param password:密码
'''
闭包:函数只是一段可执行代码,编译后就固化了,每个函数在内存中只有一份实例,得到函数的入口点就可以执行函数了。函数还可以嵌套定义,即在一个函数内部可以定义另一个函数
     有了嵌套函数这种结构,便会产生闭包问题
def outer():
    a = 100
    def inner():
        b = 10
        # b += a
        # 内部函数可以使用外部函数的变量
        # a += b
        nonlocal a
        # 如果想修改外部函数的变量,需要在内部函数中添加:nonlocal
        a += b
        # 内部函数不可以修改外部函数的变量
        print('我是内部')
    result = locals()
    # locals()表示查看函数中的局部变量,以字典的形式返回
    print(a)
    inner()
outer()
'''
闭包:
1、嵌套函数
2、内部函数引用了外部函数的变量
3、返回值是内部函数
'''
def outer(n):
    a=10
    def inner():
        b=a+n
        print('内部函数:',b)
    return inner
r=outer(5)
# <function outer.<locals>.inner at 0x000001C7A26C5CA0>
print(r)
r()
# 内部函数: 15
'''
:return可以返回一个或多个值
return a
return a,b   (a,b)
return 也表示结束函数的调用   return后面的语句不会执行
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值