昨日内容回顾
1.流程控制for循环
for+变量名+in+迭代器(可以是元组列表字典)
for i in range(10): print(i)
2.range用法
for i in range(10) # 当一个数字时,指的是默认从0开始到9 print(i) for i in range(2,10) # 当两个个数字时,指的是从指定数2开始到9 print(i) for i in range(2,10,2) # 当三个数字时,指的是从指定数2开始到9当中间隔为2类似于等差数列 print(i)
3.数据类型内置方法
整数型int print(bin(100)) # 0b1100100z 十进制转2进制 print(oct(100)) # 0o144 十进制转8进制 print(hex(100)) # 0x64 十进制转16进制
字符串str """ 索引取值,间隔步长,统计长度,切片操作.strip(移除操作)split(切割字符)maxsplit=1(最大切割数为1)rsplit(从右 切割) upper (转大写)lower(转小写) count(出现几次字数) replace(替换) jion(加入) """
列表list """ 索引取值,切片操作,间隔步长,统计长度 append(尾部添加元素)insert(插入)extend(扩展列表) del(删除元素) pop(弹出元素) count (统计次数) sort(升序) sort(reverse=True)倒序 """
字典dict # 统计长度,按key,value,items取值.可以索引取值,如果之不存在就创建新值 dict={'name':'max','age':'25','hobby':'game'} dict['name']='xam' print(dict) # {'name': 'xam', 'age': '25', 'hobby': 'game'}
布尔值 # true 或者false
集合set # 集合是无序的,会自动去重. # 1.求共同好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s1&s2) # {'max', 'jaxon'} # 2.求s1 独有的好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s1-s2) # {'jack', 'tony'} # 3.求s2独有好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s2-s1) # {'ada', 'tim'} # 4. 求两个人所有的好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s2|s1) # {'jaxon', 'jack', 'ada', 'tony', 'max', 'tim'} # 5.求两个各自独有的好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s2^s1) # {'ada', 'jack', 'tim', 'tony'} # 6. 父集 子集 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s1<s2) # False print(s1>s2) # False
# 如果要查看数据类型的内置方法可以用.句符号
---------------------------------------------------------------------------------------------------------
今日学习内容
""" 计算机是基于电工作的 电信号只有高低电平两种状态 也就是说计算机只认识两种状态 人为的定义为数字0和1即二进制 人类的字符与数字之间存在对应关系 相当于发电报彼此携带的密码本一样 """
字符编码的发展: """ 每个国家使用的语言都有相对应的编码本 美国的ASCII码,中国的GB码,日本的shift_JIS码,韩国的Euc_kr码 内部都记录了自己国家的语言以及英文与数字的对应关系. """ """ 直到unicode码的出现内部记录了各个国家的文字与数字之间的对应关系 而utf8是之前万国码的优化版本,也是现在默认使用的版本. """
# 如果文件出现了乱码,可以尝试切换字符编码.
编码 # 编码就是把人用的语言翻译成机器能看懂的语言 res = '阿富汗战争结束了' res1 = res.encode('gbk') print(res1) 解码 # 解码就是把机器看懂的语言翻译成人能看得懂的语言 res2 = res1.decode('gbk') print(res2) # b'\xb0\xa2\xb8\xbb\xba\xb9\xd5\xbd\xd5\xf9\xbd\xe1\xca\xf8\xc1\xcb' # 阿富汗战争结束了
# 第一种(推荐使用) with open(文件路径,读写模式,字符编码) as 变量名: with子代码 # 第二种(不推荐使用) 变量名 = open(文件路径,读写模式,字符编码) 一系列操作 变量名.colse()
# 文件路径分为:相对路径(需要参考系) '123.txt'
与绝对路径(不需要任何参考系) D:\8.16练习\123.txt
#r为源字符
通常\+n或者\+t会产生一些操作,我们可以在字符串前加r来取消转义
""" r 只读模式 1.文件路径如果不存在,会报错 2.如果存在 就打开可读取内容. 但是如果一次性打印多次,但结果只会出现一次,因为光标会随着最后一个字符结束用空格补齐 """
""" w 只写模式 1.如果文件路径不存在会自动创建. 2.如果文件路径存在会先清空原文件内容再记录填写内容,所以多用于新建文件 """ with open(r'123.txt','w',encoding='utf8') as txt: txt.write('啦啦啦啦\n') txt.write('啦啦啦啦\n') # 啦啦啦啦 啦啦啦啦
""" a 只追加模式 1.如果文件路径不存在会自动创建 2.文件路径存在会在尾部追加. with open(r'123.txt','a',encoding='utf8') as txt: txt.write('哈哈哈哈') txt.write('哈哈哈哈') 光标会移动到文件末尾,可以在末尾追加内容 """
# 内容优化 with open(r'aaa.txt', 'r', encoding='utf8') as f: for line in f: # 一行行读取文件内容 能够避免内存爆炸 print(line) # lines可以都多行
""" 分为两种种操作模式 t模式:(文本模式) rt wt at 1.只能操作文本文件. 2.一定要encoding参数 (必须要有编码本) 3.读写都是以字符串为单位 """ b模式(二进制模式) rb wb ab 1.可以操作任意类型的文件 2.由于已经是二进制模式所以不需要指定encoding参数 3.读写都是以bytes(二进制)为单位
#作业1 l1=input('请输入拷贝文件路径:') l2=input('请输入目的文件路径:') with open(l1,'r',encoding='utf8') as f: l3= f.read() with open(l2,'w',encoding='utf8') as f: f.write(l3) #作业2 print('注册') a1 = input('用户名:') b1 = input('密码:') c1 = a1+'|'+b1 with open(r'abc.txt','a',encoding='utf8') as f1: f1.write(c1) print('注册成功!') print('登陆账号') a2 = input('用户名:') b2 = input('密码:') c2 = a2+'|'+b2 with open(r'abc.txt','r',encoding='utf8') as f2: d = f2.read() if c2 in d: print('登陆成功!') else: print('登陆失败!')