#第二次作业

1.作业

(1)题目及要求

 

(2)user文件

 

(3)源代码

复制代码
#作业登录功能:在文件中读出来,把用户名密码切出来
def  login():
    condition=0
    while condition<3:
        user = input('请输你的用户名:').strip()
        pwd = input('请输入你的密码:').strip()
        name_info=f'用户名:{user}'
        pwd_info = f'密码:{pwd}'
        with open('user2.txt', 'r', encoding='utf-8')as f:
            res = f.read()
            list=res.split(',')
        if name_info in list:
            # 获取该用户名所在的位置
            name_location=list.index(name_info)
            # 用户名的后一个元素就是密码,通过+1获得文件中该用户名对应密码的位置
            # 由此实现用户名与密码绑定
            if pwd_info ==list[name_location+1]:
                print('登陆成功')
                break
            else:
                print('用户名或密码错误')
                print('请重新输入用户名和密码')
        else:
                print('用户名不存在')
        condition=condition+1
login()
复制代码

(4)结果

成功情况:

 

 

 

不成功情况:

 

2.课堂笔记

(1)列表,集合,元组,深、浅拷贝

复制代码
# 1.数据类型的剩余的内置方法
# 2.字符编码
# 3.文件处理
# 1.1列表类型
list1=['tank',18,'male',3.0,9,'广东','tank',[1,2]]
list1.insert(2,'oldboy')
print(list1)
# count()查看某个值的个数
print(list1.count('tank'))
# index()查看值的索引
print(list1.index('广东'),'---广东')
list2=list1.copy()
print(list2,'添加值前')
# copy(),是属于把list1中的内存地址拷贝出来,然后会在链表中新建一个内存地址,放入其中
# 下面是赋值,是把list1的内存地址给了list3,也就是说list3是指向list1的内存地址
list3=list1
print(list3,'添加值前')
list1.append('jason')
print(list2,'添加值后')
print(list3,'后')
# copy()属于浅拷贝:list1的列表中外层值改变对其不影响
# 但是对list1中可变类型进行修改则会随之改变值
list1[8].append('tank')
print(list2)
print(list3)
# 深拷贝,把list1中的值完全拷贝到一个新的地址
# 进而与list1完全隔离开
from copy import deepcopy
list4=deepcopy(list1)
print(list4)
# extend合并???????以下的为什么不能反转后赋值给另一个列表???
list5=[1,2,3]
list6=[4,5,6]
list5 .extend(list6)
print(list5)
# reverse()反转
# 列表反转之后还是列表
# 元组与列表是非常相似的,区别在于元组的元素值不能修改,元组是放在括号里的
# reverse只是对自己本身进行升降变化,并不会有任何返回值
list5.reverse()
print(list5)
# sort()升序
list8=[1,3,5,8,10,2,4,6]
list8.sort()
print(list8)
# 降序
list8.sort(reverse=True)
print(list8)
# 1.2字典的内置方法
# 1.按照key取/存值
dict1={'name':'lhhh','age':'18','sex':'male','school':'ahpu'}
# 根据key取学校的值
#print(dict1['school'])????有问题
print (dict1.get('school','华南理工大学'))
print (dict1.get('sal','该结果不存在'))
# 成员运算
print('name'in dict1)
print('sal'in dict1)
#删除
del dict1['name']
print(dict1)
#POP()
age=dict1.pop('age')
print(dict1)
print(age)
dict1.popitem()
print(dict1)
#字典是无序的,是随机删除的,子不过目前还是在小计数池里
#key,values,items
print(dict1.keys())
print(dict1.values())
print(dict1.items())
# 键值对
#循环
for key in dict1:
    print(key)
# update()
print(dict1)
dict2={"work":"student"}
dict1.update(dict2)
print(dict1)
# 1.3元组类型
# 在小括号内,以逗号隔开存放多个值
# 注意是不可变类型,对元组进行修改内存地址就不是原来的地址了
# 因为不可以修改所以在最开始就需要赋值
tuple1=(1,2,3)
#按索引取值
print(tuple1[2])
# 切片
print(tuple1[0:6])
print(tuple1[0:6:2])
for line in tuple1:
    print(line)
# 1.4集合类型
# 在大括号内以逗号隔开可存放多个值
# 但集合会默认去重功能
# 所以一般使用集合来去重,在这里爬虫后去掉重复的数据就需要用到这个
# 集合也是无序的,去重之后,原来元素的位置可能会发生变化
set1={1,2,3,5,2,3,}
print(set1)
# 只是创建的时候类型是不确定的,只是在后来继续进行赋值的时候才会判断出是哪个类型
set2=set()
set3={}
print(set2)
print(set3)
set3['name']='tank'
print(type(set3))
复制代码

(2)文件读写常规写法,with写法

a.注意需要添加requests库

  方法:在命令行里写入

           pip3 install requests

   注:安装过后requsets还是有波浪线,原因可能是1.未配置python的环境变量  2.所建的python文件是虚拟的,需要添加python解释器。

复制代码
# 文件读写
# open(参数1:文件的绝对路径/文件的名字,参数2:操作模式,参数3:指定字符编码)
# 对文本进行操作
# f称之为句柄,能操作文件的对象
# f=open(r'F:\python学习\PyCharm 2018.1.4\DD.txt',mode="wt",encoding="utf-8")
# # wt=write text
# f.write('hello')
# write会重新生成一个文件,写入内容
# #回收文件的资源
# f.close()
# 读文件
# 因为前两个参数在源码中已有定义,所以可不写
f=open(r'F:\python学习\PyCharm 2018.1.4\DD.txt',mode="rt",encoding="utf-8")
res=f.read()
print(res)
f.close()
# 文件追加append
# 是在原来文件的末尾添加内容
f=open(r'F:\python学习\PyCharm 2018.1.4\DD.txt','a',encoding="utf-8")
f.write('\nhello jason')
f.close( )
# 默认at模式
复制代码
复制代码
#文件处理之上下文管理:with()
# with会自带close()功能
# 会在
with open (r'file1.xt','w',encoding='utf-8')as f:
    f.write('life is short')
#读文件
with open (r'file1.xt','r',encoding='utf-8')as f:
    res=f.read()
    print(res)
#追加文件
复制代码

(3)图片,视频的读 、写、追加

a.注意:获取图片的url,可通过右击复制图片地址等

b.注意: 在读写视频中,关于本地视频,是将其粘贴到所建的python文件夹下,之后创建出广告片.mp4这个文件,但是此时在python中是以文件的形式,

     需要右击新建出的文件,选择show in Explorer,找到实际在电脑中所建立的文件,再打开就可以了
复制代码
# 都是以二进制的形式读入到内存,然后再从内存读出到所见建的文件中
# import requests
# res=requests.get('https://img.zcool.cn/community/017c395cfd98c5a801213ec23f5be0.jpg@2o.jpg')
# print(res.content)
# #写入图片
# with open('hua1.jpg','wb')as f:
#     f.write(res.content)
# # 因为unicode 也是base型
# # 读取图片
# with open('hua1.jpg','rb')as f:
#     res=f.read()
#     print()
# # 文件拷贝操作
# with open('hua1.jpg','rb')as f,open('beautiful.jpg','wb')as w:
#     res=f.read()
#     w.write(res)
# # 读写视频
# # 由于一次打开文件所有的内容,若文件的大小超出内存的大小则会溢出
# # 所以采用以下的方法一行一行的读,一行一行的写入新文件中
with open('樱花味薯片概念片.mp4','rb')as f,open('广告片1.mp4','wb')as w:
    for line in f:
        w.write(line)
# 此时会创建出广告片.mp4这个文件,但是此时在python中是以文件的形式,
# 需要右击新建出的文件,选择show in Explorer,找到实际在电脑中所建立的文件,再打开就可以了
# res=f.read()
# print(res)
# w.write(res)
复制代码

posted on 2019-06-13 10:55  肥嘟嘟左卫门!  阅读(128)  评论(0编辑  收藏  举报

导航