Python笔记内容

python笔记

  1. 第三章列表的增、删、改、查
#conding=utf-8
#列表的操作:增删改查
#2020年3月16日 23:48:13
list1 = ['dyne','来宾']
#列表增加年龄元素,INT型
list1.append(38)
print("1列表追加年龄:",list1)
#指定位置插入元素如下标为0,一般不用,因为数据大时
#插入后,后面的数据的下标就得全部改,就会慢
list1.insert(0,'gxlb120')
print("2指定位置插入元素:",list1)
#另外一种合并,两个LIST相加赋值给第三变量
list2 = [123,'abc']
list3 = list1 + list2
print("3两个列表相加为:",list3)
#两个列表合并,不需要第三变量,直接合并赋值给变量1
list1.extend(list2)
print('4两个列表的合并:',list1)
#查看三个列表的内存空间地址
print(id(list1))
print(id(list2))
print(id(list3))
#删除列表末尾的元素-1
list1.pop()
print("5删除列表最后一个元素:",list1)
list1.pop(-2)
print("6删除指定下标的一个元素:",list1)
#不知道下标,知道元素内容,删除指定内容
list1.remove('gxlb120')
print("7删除指定元素内容:",list1)
#list1.remove('abc') 如果指完元素list不存就在就报错
#del 按下标删除元素内容
del list1[1]
print("8del按下标删除元素:",list1)
#整个列表删除 DEL,列表不带参数
del list3
#列表元素的修改
list1[-1] = 38
print("9列表元素的修改:",list1)
#统计列表里元素的个数
list1.append("dyne")
print(list1)
print("10统计列表dyne个数:",list1.count('dyne'))
#按元素内容查找其在LIST里的左住右第一个下标值
print("11元素dyne在列表第一个的下标为:",list1.index("dyne"))
#list元素顺序倒序两种方法:切片和REVERSE
list1[0] = 'gxlb120'
print(list1)
print("12列表切片倒序显示:",list1[::-1])
print("切片的话再次打印列表,下标不变其顺序又恢复:",list1)
list1.reverse()
print("13真正意义的倒序下标会变:",list1)

**代码运行效果:代码运行效果
**
DAYS6 集合

  1. 集合set 容器型的数据类型,它要求它里面的元素是不可变的数据,但它本身是可变的数据类型。集合是无序的,符号为:{}
  2. 集合的作用:
    • 列表的去重
    • 关系测试:交集、差集、并集 等
  3. 集合的创建: set1 = {5,4,3,“中国”,‘达因’}
  4. 不可变的数据类型有:数字(int float、bool、复数);字符串、元组。
  5. 可变的数据类类型有:list列表、集合set 、字典dict
  6. 集合的增删改查操作
    `
#增的方法如下:
set1 = {'dyne','age','guangxi'}
set1.add('gxlb120')
print(set1) 
#结果显示如下:
{'dyne','age','guangxi','gxlb120'}  
#第二种增加方法
set1.update('abced') 
print(set1)
#结果显示如下:
{'dyne','a','c','age','guangxi','b','e','gxlb120','d'}  
#集合的删除方法如下:
set1.remove('age') #把集合set1里的AGE这个元素给删除。
#集合随机删除pop()
set1.pop()#随机把集合SET1里的元素进行删除一个。
#集合的清空操作:
set1.clear() #把集合set1给清空。
#集合的删除
del set1 #删除集合set1.
#集合的值是不可改的,按理是不可以进行修改的,所以只能变相的进行修改,先删除,再增加新的如:
set1.remove('dyne')
set1.add('小吴')
print(set1)

  1. 集合的交集(&或intersection)

    • set1 = {1,2,3,4,5}
    • set2 = {4,5,6,7,8}
    • print(set1&set2)
    • 结果显示:{4、5} 为两个集合公共大家都共有的部分。
  2. 集合的并集(|或union)

  3. print(set1|set2)

  4. 结果显示 :{1,2,3,4,5,6,7,8} 把两者都有的全列出来。

  5. 集合的差集(-或difference)

  6. 差集就是谁和谁比较,它自己独有的元数如:

  7. print(set1-set2)

  8. 结果显示:{1,2,3}因为45和set2一样,只有123在SET2是没有的。

  9. 如果print(set2-set1) 则显示set2独有的{6,7,8}

  10. 子集和超集:谁包含 了谁,谁就是超集,谁在谁的里面谁就是子集

  11. set1 = {1,2,3}

  12. set2 = {1,2,3,4,5,6}

  13. print(set1<set2)

  14. 结果显示true set1小于set2 ,set1是set2的子集

  15. print(set2>set1)

  16. 结果显示true set2包含了set1,set2是set1的超集。

  17. 列表的去重操作如下:

list1 = [1,1,1,3,5,6,8,8,9]
set1 = set(list1) #把列表转成集合,得到去重列表的元素放到集合set1里
print(set1)
list1= list(set1)#再把集合转成列表,就得到去重的列表了。

总结

  • id is == 三个方法要会用,知道是做什么的
  • 回答的时候一定要分清楚: 同一个代码块下适用一个缓存机制。不同一个代码块下,使用另外一套机制(小数据池),缓存机制目的是提升性能,节省内存。
  • 小数据池:数字的范围是-5~256
  • 集合:列表去重、关系测试。
  • 深浅COPY,理解。
'''
@Project :02python test 
@File    :01文件读取操作.py
@IDE     :PyCharm 
@Author  :gxlb120
@Date    :2020/12/19 12:26 
'''
f = open("name_write", "a")  # f=open("文件名",参数不写默认为R只读,W为写入)打开文件. W会删除旧的,重新更新, A 为追加
f.write("gxlb150\n")  # 往文件里写入内容
# 如果为f.read()为读操作,读写不能同时存在会报错。
f.write("gxlb110\n")
f.write("djxhc888\n")
f.write("djxhc150\n")
f.write("djxhc120\n")

f.close()  # 保存并并闭

# 文件打开模式(文本模式)
# r :只读模式;
# w :创建模式,若文件已存在,则覆盖旧文件和内容
# a : 追加模式,新数据会写到文件末尾。
# print(f.read()):读出文件所有内容
# print( f.readline() )读一行
# 在打开一个文件,为A追加模式时,也只能f.write(),而不能有写又有读f.read(),会报错。

``'''
@Project :02python test 
@File    :02循环文件.py
@IDE     :PyCharm 
@Author  :gxlb120
@Date    :2020/12/19 14:28 
'''
f = open("name_write")
for line1 in f:
    line1 = line1.split()#把读出的内容转为列表
    # print(line1)
    height =int(line1[1])#把列表的第二个元素转为整形,赋值给身高变量。
    weight = int(line1[2])
    if height <= 170 and weight <= 80:
        print(line1)

# print(f.readlines()) 把所有内容一行读出显示

DAY4 进制操作文本

f = open(“name_list”,encoding=gbk) #这里指字文件的编码模式是GBK,
如果不指定,解释器默认是使用utf-8来解释,然后这个文档的编码却是
GBK的,这样会报错。
*如何处理图片、视频文件呢?
可以用二进制模式打开文件:

  • rb: 二进制只读模式
  • wb: 二进制创建模式,若文件已存在,则覆盖旧文件
  • ab:二进制追加模式,新数据会写到文件末尾
  • 这样读出来的数据,就是bytes字节类型了,当然写进去的也是字节类型
f = open("201811.jpg",‘rb’)#表示以二进制字节模式打开这张图片2:写入二进制内容
f = open("wb_file","wb")# 创建二进制文件名为we_file
s = 'dyne110' #   定义一个变量S,为str类型
f.write(s.encode("utf-8"))#告诉解释器软件,使用UTF-8编码把2017写到文件里。decode为解码。

day4-8 跳到任意位置修改文件

f = open("name_list") #默认打开文件读
f.seek(6) #.seek为移动光标位置,是按字节来移动,如果是GBK编码一个汉字两个字节,如果是utf-8一个汉字就三个字节,所以6表示移动光标两个汉字后位置停留。
print(f.readline())#打印光标所在位置一行内容

程序:判断用户登录,密码输入三次出错,锁定账号

ccounts ={} #定义一个空字典,用于存文件里的内容,方便查询
f = open("accounts.db","r")#打开文件
for i in f:
    i = i.strip().split(",")
    accounts[i[0]] = i
print(accounts)

while True:
    user = input("username:").strip()
    if user not in accounts:#判断用户是否在数据文件里,不在则提示要注册
        print("该用户未注册。。。")
        continue
    count = 0 #初始变量值为0,用于计数登录次数
    while count < 3:#控制密码输入三次出错就锁定
        passwd = input("passwd:").strip()
        #去账号字典里判断密码对不对
        if passwd == accounts[user][1]:
            print(f"welcome {user} ...登录成功。")
            exit("bye...") #登录成功退出
        else:
            print("密码不对,请重新输入")
        count += 1
    if count ==3:
        print(f"输入错了{count} 次密码,账号{user}被锁定")
        accounts[user][2] = "1" #把锁定状态标识改成1,0为未锁定,1为锁定
        f2 = open("accounts.db","w")#再次打开文件,写的模式
        for user,val in accounts.items():
            i = ",".join(val) + "\n" # 把列表转成字符串
            f2.write(i)
        f2.close()
        exit("程序退出。。。")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值