Day2,入坑第二天
作业:
代码如下:
待读取的文件存储的用户名和密码为: rzf,123456 函数内容如下:
def register():
'''
用函数实现登录功能
:return:
'''
number=0
with open('user.txt','rt',encoding='utf-8') as f:
res = f.read()
username,password = res.split(':')
flag = True
while flag:
user = input('请输入用户名:').strip()
if username == user:
if number == 3:
break
while number<3:
pwd=input('请输入密码:').strip()
if password ==pwd:
print('登录成功')
flag=False
break
else:
print('用户名或密码错误,请重新输入!')
number+=1
else:
print('用户名不存在,请重新输入')
register()
学习内容:
1.Python3中,有6个标准的数据类型,他们又分为可变和不可变
'''
不可变数据(3个):
•Number(数字)
•String(字符串)
•Tuple(元组)
可变数据(3个):
•List(列表)
•Dictionary(字典)
•Set(集合)
'''
浅拷贝和深拷贝的区别
''' 浅拷贝 copy模块里面的copy方法实现 1、对于 不可 变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。 2、对于 可 变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝 3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。(操作拷贝对象对原始对象的也是同理) 深拷贝 copy模块里面的deepcopy方法实现 1、浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝) 2、经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了 '''
字典的内置方法
''' # 一 字典的内置方法(字典是无序的) # # 1、按照key取/存值 dict1 = {'name': '张琦', 'age': 18, 'sex': 'male', 'school': '安徽工程大学'} # 根据key取张琦的学校 # print(dict1['school']) # print(dict1['sal']) # get() # 第一个参数是字典的key # 第二个参数是默认值,若key存在则取key对应的值,否则取默认值 print(dict1.get('school', '华南理工大学')) print(dict1.get('sal', '15000')) # 2、len print(len(dict1)) # 4 # 3、成员运算in和not in print('name' in dict1) # True print('sal' in dict1) # False print('sal' not in dict1) # True # # 4、删除 # del dict1["name"] # print(dict1) # pop() # 根据字典中的key取出对应的值赋值给变量name # name = dict1.pop('name') # print(dict1) # print(name) # 随机取出字典中的某个值 dict1.popitem() # Python 字典 popitem() 方法返回并删除字典中的最后一对键和值。 # 如果字典已经为空,却调用了此方法,就报出 KeyError 异常。 print(dict1) # 5、keys、values、items print(dict1.keys()) print(dict1.values()) print(dict1.items()) # 6、循环 # 循环字典中所有的key for key in dict1: print(key) # 7、update() # 更新 print(dict1) dict2 = {"work": "student"} # 把dict2加到dict1字典中 dict1.update(dict2) print(dict1) '''
元组类型
# 二 元组类型(在小括号内,以逗号隔开存放多个值) # 注意: 元组与列表的区别,元组是不可变类型,列表是可变类型。 tuple1 = (1, 2, 3, 4, 5, 6) print(tuple1) # 优先掌握 # 1.按索引取值 print(tuple1[2]) # 2.切片(顾头不顾尾) print(tuple1[0:6]) # (1, 2, 3, 4, 5, 6) # 步长 print(tuple1[0:6:2]) # (1, 3, 5) # 3.长度 print(len(tuple1)) # 6 # 4.成员运算 in 和 not in print(1 in tuple1) # True print(1 not in tuple1) # False # 5.循环 for line in tuple1: print(line)
集合类型
1 # 三 集合类型(一般用于去重) 2 # 在{}以逗号隔开,可存放多个值,但集合会自带默认去重功能。 3 set1 = {1, 2, 3, 4, 2, 1, 3, 4} 4 print(set1) 5 6 # 集合是无序的 7 # 集合(set)是一个无序的不重复元素序列。 8 # 9 # 可以使用大括号 { } 或者 set() 函数创建集合, 10 # 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 11 set1 = set() 12 set2 = {} 13 print(set1) 14 print(set2) 15 16 set2['name'] = 'tank' 17 print(type(set2))
文件操作
文件读写基本使用 # 对文本进行操作 # open(参数1: 文件的绝对路径/文件的名字,参数2:操作模式, 参数3: 指定字符编码) # f: 称之为 句柄 # r: 避免转义符 # 打开文件会产生两种资源,一种是python解释器与python文件的资源,程序结束python会自动回收。 # 另一种是操作系统打开文件的资源,文件打开后,操作系统并不会帮我们自动收回,所以需要手动回收资源。 # 写文件 f = open( r'/python相关/python_files/安徽工程/files/文件的名字.txt', mode="wt", encoding="utf-8") f.write('hello 安徽工程大学') f.close() # 读文件 f = open( r'/python相关/python_files/安徽工程/files/文件的名字.txt', 'r', # 默认rt encoding='utf-8') res = f.read() print(res) f.close() # 文件追加模式 a f = open(r'/python相关/python_files/安徽工程/files/文件的名字.txt', 'a', # 默认at模式 encoding='utf-8' ) f.write('\nhello jason') f.close()
文件处理及上下文管理
# 文件处理之上下文管理: with # with会自带close()功能, # 会在文件处理完以后自动调用close()关闭文件 # 写文件 with open(r'file1.txt', 'w', encoding='utf-8') as f: f.write('life is short, u need python!') # 读文件 with open(r'file1.txt', 'r', encoding='utf-8') as f: res = f.read() print(res) # 文件追加 with open(r'file1.txt', 'a', encoding='utf-8') as f: f.write('\n AAA')
图片与视频读写操作
# import requests # pip3 install requests # res = requests.get( # '某网站.jpg') # print(res.content) # # # 写入图片 # with open('大帅比.jpg', 'wb') as f: # f.write(res.content) # # # # 读取图片 # with open('大帅比.jpg', 'rb') as f: # res = f.read() # print(res) # # # # 文件拷贝操作 # with open('大帅比.jpg', 'rb') as f, open('小哥哥.jpg', 'wb') as w: # res = f.read() # w.write(res) # # # 读写视频 # with open('tianyan_sys.mp4', 'rb') as f, open('tianyan_sys_copy.mp4', 'wb') as w: # res = f.read() # print(res) # w.write(res) # 一行一行读文件 # with open('tianyan_sys.mp4', 'rb') as f, open('tianyan_sys_copy.mp4', 'wb') as w: # 一次打开文件所有内容,若文件的大小超出内存的大小会导致内存溢出 # f.read() # 一行一行读取文件内容,一行一行写入文件中,避免内存溢出 # for line in f: # w.write(line) # res = f.read() # print(res) # w.write(res)
函数基础
''' 1、什么是函数? 函数相当于工具,需要事先准备好,在需要用时再使用。 2、如何使用函数? 函数必须先定义、后调用。 ''' # 3、函数的语法: # def 函数名(参数1,参数2...): # """ # 注释 # 函数的说明 # 水杯,用来盛水与喝水 # """ # 函数体代码(逻辑代码) # return 返回值 ''' def: (全称defind) 用来声明定义函数的关键字。 函数名: 看其名、知其意。 (): 括号,存放的是接收外界的参数。 注释: 用来说明函数的作用。 函数体代码: 逻辑代码。 return: 后面跟函数的返回值。 ''' # 注册功能 # 先定义 def register(): ''' 此函数注册功能 :return: ''' while True: # 让用户输入用户名与密码 user = input('请输入用户名:').strip() pwd = input('请输入密码:').strip() re_pwd = input('请确认密码:').strip() # 判断两次输入的密码是否一致 if pwd == re_pwd: # 格式化字符串的三种方式 # user_info = '用户名:%s,密码:%s' % (user, pwd) # user_info = '用户名:{},密码:{}'.format(user, pwd) # 字符串前写一个f相当于调用format方法 user_info = f'用户名:{user},密码:{pwd}' # 把用户信息写入文件中 with open(f'{user}.txt', 'w', encoding='utf-8') as f: f.write(user_info) break else: print('两次密码不一致,请重新输入!') # 调用函数: 函数名 + 括号 即调用函数. # register() ''' 函数在定义阶段发生的事情: 1.先打开python解释器。 2.加载05 函数基础.py 文件。 3.python解释器会帮我们检测py文件中语法, 但是只会检测python语法,不会执行函数体代码。 ''' def foo(): print('from foo!') bar() # print( # 调用阶段,会执行foo函数体代码。 foo() # 作业一 课堂代码,敲一遍 # 作业二 整理笔记,并写博客。 # 作业三 用函数实现登录功能 ''' 1、让用户输入用户名与密码 2、校验用户名是否存在 3、用户名存在后检验密码是否正确,若正确打印"登录成功", 否则打印"用户名或密码错误",并让用户重新输入。 4、用户密码输入错误超过三次则退出循环。 '''
总结:
也不知道到底会没会,反正是用自己敲了一遍,好多不会的知识点还是找的度娘,估计过段时间就忘了。心里已经有了怎么学python的想法,我打算用本科书加上菜鸟教程里的python教程看之后写代码。但又要考四六级了,感觉又要GG,我不禁在想自己,为什么堕落成这样了。准确的说从高二那年我就彻底堕落了,现在的我比高中更堕落,那么将来的我比现在更堕落?这是个很严肃的问题,答案我竟然没有底气的说不!想想初中的我虽说不爱学习,但我也在学习,也不为什么,就是没什么好玩的。高中考了个全国百强中学有点飘飘然了,准确的说当时一中是我高中的目标,我努力的实现了它,可是我高中好像没有了目标,也许是当时爱玩的自己给pass了。如果硬要说高中的目标的话,记得高一入学时班主任让我们每个人选一个目标学校上交给他,我当时好像写的中科大,毕竟高中比较好,有对初中的自己自信。现在说来竟有点可笑,唉,今天还被人嘲讽了,说我学习菜,虽说挺不愿意承认,可是又无法反驳,只回了句毕业看谁菜。可是现在的自己应该是个小白,对于大学所学的课程。其实我感觉那个人很垃圾,坦白说我认为这个学校很多人的垃圾,我都忘了自己是垃圾中的一员了。不过我 还是要说那个人很垃圾,包括很多这个学校里每学期没怎么学但也上课听了的,最终期末考试考7,80分的人,这些人有一个特点,自己不强,看到牛的人时,一副舔狗的嘴脸,看到不认真学的人即挂科一族,很是鄙视,一副高高在上的视角。其实这种人很可怕,因为再差的学校都有牛逼的人,那些人时真正的大牛;还有的时那种没有认真学又没完全放弃的人,他们努力起来没有后顾之忧,因为自己没学过,这些人之中会有一部分人变得很厉害;但那种中等的又当舔狗又当人上人的人最悲哀,因为他们不会用10分的努力,他们只会学=努力7分就当舔狗和人上人去了,对大牛“掏心窝”的说我很努力了,可是没办法我天分不够,或者我选错了方向比如选错了专业等等,他们又会对那些可以称之迷途知返的人说,你们别做梦了,当初不努力,现在装什么,没机会了等等负面能量。更有甚者甚至会用阴阳怪气的语气跟你说:哇,你现在这么努力,我都有点震惊,你这过不了多久就成大牛了,我得向你学习,你这么努力今年一定班级前三,获得奖学金,考上985。对于这种人,我很想打他,但又不想因为这件“小事”打他,总要找个契机打他,你们懂的!但其实最好的方法还是不予理睬,郭大爷不是说了吗,和狗一起抢行,你得让狗!其实这种人你不理他,他反而一肚子气,嘻嘻。当然在努力的过程中要向好学生靠拢,但不要太刻意,随缘即好,毕竟你足够优秀,你身边的人自然优秀,道理我想大家都懂!想到我的高中同学现在和我差距越来越大,感觉都要差了一个阶级了,这个是最让我受不了的!(当然是我比他们差太远)
好了,一通抱怨之后贼爽,每天给自己打个气吧!加油fighting!!!
要努力啊,赶上高中同学啊,不能掉队啊,考研加油啊!尽量不在宿舍,其简直是青春的坟墓啊!
PS:SB还是要打一顿比较爽!(能打就打,抓住机会)