第二篇:数据类型、字符编码、文件处理
阅读目录
一 可变or不可变类型
1 ''' 2 1、可变: 3 在值改变的情况,如果id不变,证明就是在修改原值,即可变类型 4 5 6 2、不可变: 7 在值改变的情况,如果id也跟着变,证明根本没有修改原值,即不可变类型 8 9 ''' 10 #如下可变的类型 11 x=10 12 print(id(x)) 7579900 13 x=11 14 print(id(x)) 7579888 15 #不可变的类型 16 colletionid_info =['ccb.cc','abc.cc','icbc.cc'] 17 print(id(colletionid_info)) 18 #内存地址:40528072 19 colletionid_info.append('boc.cc') #向列表中插入一个值 20 print(colletionid_info) 21 #['ccb.cc', 'abc.cc', 'icbc.cc', 'boc.cc'] 22 print(id(colletionid_info)) 23 #内存地址:40528072
二 数字
整型与浮点型
1 #整型int 2 作用:年纪,等级,身份证号,qq号等整型数字相关 3 定义: 4 age=10 #本质age=int(10) 5 6 #浮点型float 7 作用:薪资,身高,体重,体质参数等浮点数相关 8 9 salary=3000.3 #本质salary=float(3000.3) 10 #十进制转换为二进制 11 # print(bin(8)) 0b1000 12 #十进制转换为八进制 13 # print(oct(9)) 011 14 # 十进制转成十六进制 15 # print(hex(16)) 0x10
三 字符串
1 #作用:名字,性别,国籍,地址等描述信息 2 3 #定义:在单引号\双引号\三引号内,由一串字符组成 4 name='zhangning' 5 6 #优先掌握的操作: 7 #1、按索引取值(正向取+反向取,下标是从0开始的,格式为:str[index]) :只能取 8 #注意:与列表不同,对字符串操作的所有方法是生成一个新的字符串,而不是直接修改原有的字符串!!! 9 print(name[0],name[-1]) #结果 z g 10 #2、切片(顾头不顾尾,步长,格式为 str[index1:index2:step]) 11 print(name[0:5]) #结果;zhang 12 print(name[:5]) #结果;zhang 13 print(name[5:]) #结果;ning 14 print(name[0:5:2]) #结果;zag 15 print(name[5:-1]) #结果;zag 16 #3、长度len 17 print(len('zhangning'))#结果;9 18 #4、成员运算in和not in 19 #5、移除空白strip 20 #6、切分split 21 #7、循环 22 #需要掌握的操作 23 #1、strip,lstrip,rstrip 24 name='$@*zhangnig&^ ' 25 print(name.strip()) #结果:$@*zhangnig&^,默认去掉字符串两边的空格 26 print(name.strip('$@*&^ '))#结果:zhangnig,自定义去掉字符串两边的符号 27 #2、lower,upper 28 name='ZhangNing' 29 print(name.lower()) #结果:zhangning ,将字符串全部转换为小写 30 print(name.upper()) #结果:ZHANGNING ,将字符串全部转化为大写 31 #3、startswith,endswith 32 print(name.startswith('Z')) #结果:True 33 print(name.endswith('g')) #结果:True 34 #4、format 35 print('my name is {},my age is {}'.format('zhangning',30)) #结果:my name is zhangning,my age is 30 36 print('my name is {name},my age is {num},点击查看{name}的博客'.format(name='zhangning',num=30)) #结果:my name is zhangning,my age is 30 37 #5、split,rsplit(将一串字符串按要求进行分割,然后将分割结果返回存进一个列表中,默认以空格分割) 38 print('my like ctrip'.split()) #结果:['my', 'like', 'ctrip'] 39 print('my like ctrip'.split('r')) #结果:['my like ct', 'ip'],注意分隔符不存在了。 40 #6、join 41 print('*'.join('mynameiszhangning')) #结果:m*y*n*a*m*e*i*s*z*h*a*n*g*n*i*n*g 42 print(' '.join('zhang'))#结果:z h a n g 43 #7、replace 44 print('zhang ning'.replace('ning','sir')) #结果:zhang sir 45 #8、isdigit 46 while True: 47 name = input('请输入您要注册的用户名(只能由字母组成):') 48 password = input('请输入您的注册密码(只能由字母和数字组成)') 49 phonenum = input('请输入您的电话号码(只能由数字组成)') 50 51 if name.isalpha() and password.isalnum() and phonenum.isdigit(): 52 break 53 else: 54 print('输入的格式有误,请重新输入')
四 字典
1 一、字典的简介 2 1.字典采用键值对(key-value)的形式存储数据,字典是无序存储的,key必须是不可变类型,如:数字、字符串、元组,取值速度快。 3 二、增、修改、查 4 1.dict['key'] = vaule(如果不存在该key的值,则添加,如果存在key的值,则修改,如果是dict['key'],则是查询) 5 dict_info ={'name':'robin','age':30,'job':'ctrip'} 6 dict_info['addr']='shanghai' 7 结果:{'name': 'robin', 'age': 30, 'job': 'ctrip', 'addr': 'shanghai'} 8 dict_info['addr']='beijing' 9 结果:{'name': 'robin', 'age': 30, 'job': 'ctrip', 'addr': 'beijing'} 10 2.setdefault()(参数为(‘key’,‘value’) value默认为none,如果字典存在该key,则不做任何操作,么有则正常添加) 11 dict_info ={'name':'robin','age':30,'job':'ctrip'} 12 dict_info.setdefault('addr','shanghai') 13 结果:{'name': 'robin', 'age': 30, 'job': 'ctrip', 'addr': 'shanghai'} 14 dict_info.setdefault('addr','beijing') #不存在key(addr)正常添加 15 结果:{'name': 'robin', 'age': 30, 'job': 'ctrip', 'addr': 'shanghai'} #存在key,不作任何操作。 16 三、删除 17 1.pop(key),(字典的pop()方法必须得给它传一个key值,如果字典里没有该key,则会报错,或者,pop(key,'返回值') 来指定返回值,此时,当找不到key的时候,则不会报错,会将指定的返回值返回) 18 dict_info ={'name':'robin','age':30,'job':'ctrip'} 19 dict_info.pop('name') 20 print(dict_info) # res:{'age': 30, 'job': 'ctrip'} 21 # dict_info.pop('name') #res:KeyError: 'name' 22 print(dict_info.pop('name',None)) #res:None ,返回定义的NONE值 23 四、查 24 1.dic[key] 25 可以通过key来索引查询字典的元素,如果查不到,则会报错 26 dict_info ={'name':'robin','age':30,'job':'ctrip'} 27 print(dict_info['name']) #res:robin 28 print(dict_info['addr']) #res:KeyError: 'addr' 29 2.get(key)(通过 dic.get(key,'返回值') 默认返回值为None,方法指定找不到key时候的返回值) 30 dict_info ={'name':'robin','age':30,'job':'ctrip'} 31 print(dict_info.get('addr')) #res:None 32 print(dict_info.get('addr','找不到值')) #res:找不到值 33 五.循环 34 dict_info ={'name':'robin','age':30,'job':'ctrip'} 35 print(dict_info.keys()) #res:dict_keys(['name', 'age', 'job']) 36 print(dict_info.values()) #res:dict_values(['robin', 30, 'ctrip']) 37 print(dict_info.items())#res:dict_items([('name', 'robin'), ('age', 30), ('job', 'ctrip')]) 38 for k,v in dict_info.items(): 39 print(k,v) 40 #res:name robin 41 # age 30 42 # job ctrip 43 六.fromkeys 44 #案例 45 d=[1,2,3] 46 dict={} 47 dict=dict.fromkeys(d) 48 print dict #{1: None, 2: None, 3: None} 49 dict=dict.fromkeys(d,'xiaodeng') #xiaodeng为默认值 50 print dict #{1: 'xiaodeng', 2: 'xiaodeng', 3: 'xiaodeng'}
a=dict.fromkeys(['k1','k2','k3'],[])#可迭代对象即可
print(a) #rs:{'k1': [], 'k2': [], 'k3': []}
a['k1'].append(666)
print(a) #rs:{'k1': [], 'k2': [], 'k3': []}
a['k1'] =[1,2,3]
print(a) #rs:{'k1': [1, 2, 3], 'k2': [666], 'k3': [666]}
五 布尔
1 #布尔值,一个True一个False 2 #计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识 3 >>> a=3 4 >>> b=5 5 >>> 6 >>> a > b #不成立就是False,即假 7 False 8 >>> 9 >>> a < b #成立就是True, 即真 10 True 11 12 接下来就可以根据条件结果来干不同的事情了: 13 if a > b 14 print(a is bigger than b ) 15 16 else 17 print(a is smaller than b ) 18 上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。 19 #重点(☆☆☆☆☆) 20 #所有数据类型都自带布尔值 21 1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False 22 2、其余均为真