第二篇:数据类型、字符编码、文件处理

阅读目录

一  可变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、其余均为真 

 

posted @ 2018-07-02 10:05  zhang.ning  阅读(222)  评论(0编辑  收藏  举报